Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / xsp / System / Web / Util / Profiler.cs / 1 / Profiler.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* Profiler.cs
*
* Copyright (c) 2000 Microsoft Corporation
*/
namespace System.Web.Util {
using System;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Threading;
using System.Collections;
internal class Profiler {
private int _requestsToProfile;
private Queue _requests;
private bool _pageOutput;
private bool _isEnabled;
private bool _oldEnabled;
private bool _localOnly;
private bool _mostRecent;
private TraceMode _outputMode;
internal Profiler() {
_requestsToProfile = 10;
_outputMode = TraceMode.SortByTime;
_localOnly = true;
_mostRecent = false;
_requests = new Queue(_requestsToProfile);
}
internal bool IsEnabled {
get { return _isEnabled;}
set {
_isEnabled = value;
_oldEnabled = value;
}
}
internal bool PageOutput {
get {
// calling HttpContext.Current is slow, but we'll only get there if _pageOutput is true.
return (_pageOutput && !(_localOnly && !HttpContext.Current.Request.IsLocal));
}
set {
_pageOutput = value;
}
}
internal TraceMode OutputMode {
get { return _outputMode;}
set { _outputMode = value;}
}
internal bool LocalOnly {
get { return _localOnly;}
set { _localOnly = value; }
}
internal bool MostRecent {
get { return _mostRecent; }
set { _mostRecent = value; }
}
internal bool IsConfigEnabled {
get { return _oldEnabled; }
}
internal int RequestsToProfile {
get { return _requestsToProfile;}
set {
// VSWhidbey195368 Silently cap request limit at 10,000
if (value > 10000) {
value = 10000;
}
_requestsToProfile = value;
}
}
internal int RequestsRemaining {
get { return _requestsToProfile - _requests.Count;}
}
internal void Reset() {
// start profiling and clear the current log of requests
_requests = new Queue(_requestsToProfile);
if (_requestsToProfile != 0)
_isEnabled = _oldEnabled;
else
_isEnabled = false;
}
internal void StartRequest(HttpContext context) {
context.Trace.VerifyStart();
}
internal void EndRequest(HttpContext context) {
context.Trace.EndRequest();
// Don't add the trace data if we aren't enabled
if (!IsEnabled) return;
// grab trace data and add it to the list
lock (_requests) {
_requests.Enqueue(context.Trace.GetData());
// If we are storing the most recent, we may need to kick out the first request
if (MostRecent) {
if (_requests.Count > _requestsToProfile) _requests.Dequeue();
}
}
// Turn off profiling if we are only tracking the first N requests and we hit the limit.
if (!MostRecent && _requests.Count >= _requestsToProfile) EndProfiling();
}
internal void EndProfiling() {
_isEnabled = false;
}
internal IList GetData() {
return _requests.ToArray();
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* Profiler.cs
*
* Copyright (c) 2000 Microsoft Corporation
*/
namespace System.Web.Util {
using System;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Threading;
using System.Collections;
internal class Profiler {
private int _requestsToProfile;
private Queue _requests;
private bool _pageOutput;
private bool _isEnabled;
private bool _oldEnabled;
private bool _localOnly;
private bool _mostRecent;
private TraceMode _outputMode;
internal Profiler() {
_requestsToProfile = 10;
_outputMode = TraceMode.SortByTime;
_localOnly = true;
_mostRecent = false;
_requests = new Queue(_requestsToProfile);
}
internal bool IsEnabled {
get { return _isEnabled;}
set {
_isEnabled = value;
_oldEnabled = value;
}
}
internal bool PageOutput {
get {
// calling HttpContext.Current is slow, but we'll only get there if _pageOutput is true.
return (_pageOutput && !(_localOnly && !HttpContext.Current.Request.IsLocal));
}
set {
_pageOutput = value;
}
}
internal TraceMode OutputMode {
get { return _outputMode;}
set { _outputMode = value;}
}
internal bool LocalOnly {
get { return _localOnly;}
set { _localOnly = value; }
}
internal bool MostRecent {
get { return _mostRecent; }
set { _mostRecent = value; }
}
internal bool IsConfigEnabled {
get { return _oldEnabled; }
}
internal int RequestsToProfile {
get { return _requestsToProfile;}
set {
// VSWhidbey195368 Silently cap request limit at 10,000
if (value > 10000) {
value = 10000;
}
_requestsToProfile = value;
}
}
internal int RequestsRemaining {
get { return _requestsToProfile - _requests.Count;}
}
internal void Reset() {
// start profiling and clear the current log of requests
_requests = new Queue(_requestsToProfile);
if (_requestsToProfile != 0)
_isEnabled = _oldEnabled;
else
_isEnabled = false;
}
internal void StartRequest(HttpContext context) {
context.Trace.VerifyStart();
}
internal void EndRequest(HttpContext context) {
context.Trace.EndRequest();
// Don't add the trace data if we aren't enabled
if (!IsEnabled) return;
// grab trace data and add it to the list
lock (_requests) {
_requests.Enqueue(context.Trace.GetData());
// If we are storing the most recent, we may need to kick out the first request
if (MostRecent) {
if (_requests.Count > _requestsToProfile) _requests.Dequeue();
}
}
// Turn off profiling if we are only tracking the first N requests and we hit the limit.
if (!MostRecent && _requests.Count >= _requestsToProfile) EndProfiling();
}
internal void EndProfiling() {
_isEnabled = false;
}
internal IList GetData() {
return _requests.ToArray();
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TextParagraphView.cs
- ForwardPositionQuery.cs
- Span.cs
- GridViewCancelEditEventArgs.cs
- Translator.cs
- TransactionInterop.cs
- UserPreferenceChangedEventArgs.cs
- Dynamic.cs
- OleServicesContext.cs
- TextDecoration.cs
- XPathNodeIterator.cs
- ManagedWndProcTracker.cs
- Renderer.cs
- SignatureResourceHelper.cs
- AuditLog.cs
- GridViewSortEventArgs.cs
- WebPartEditorCancelVerb.cs
- RequiredFieldValidator.cs
- UnsafeNativeMethodsTablet.cs
- PersonalizationStateInfoCollection.cs
- ControlUtil.cs
- ConfigXmlSignificantWhitespace.cs
- FunctionNode.cs
- SqlInternalConnectionSmi.cs
- CodeDOMUtility.cs
- XmlSerializerSection.cs
- FixedSOMPageElement.cs
- VariableQuery.cs
- MemberDomainMap.cs
- BrushValueSerializer.cs
- TemplatingOptionsDialog.cs
- AuthenticatedStream.cs
- FirewallWrapper.cs
- SurrogateDataContract.cs
- ConnectivityStatus.cs
- SchemaNotation.cs
- CodeAccessSecurityEngine.cs
- XmlSchemaCollection.cs
- DrawingVisualDrawingContext.cs
- JsonStringDataContract.cs
- XmlSchemaImporter.cs
- DriveInfo.cs
- Header.cs
- TreeBuilder.cs
- BlurEffect.cs
- CompleteWizardStep.cs
- Transform3DGroup.cs
- ContentTextAutomationPeer.cs
- ToolBarPanel.cs
- HwndKeyboardInputProvider.cs
- KeyValueInternalCollection.cs
- RepeaterItem.cs
- DataSetUtil.cs
- FileEnumerator.cs
- ColumnHeaderConverter.cs
- DetailsViewCommandEventArgs.cs
- Errors.cs
- VariantWrapper.cs
- _OSSOCK.cs
- ColorAnimationUsingKeyFrames.cs
- UrlMappingCollection.cs
- LayoutTableCell.cs
- SynchronizationValidator.cs
- LineBreakRecord.cs
- CollectionViewGroup.cs
- WsdlServiceChannelBuilder.cs
- ContextBase.cs
- StrongNameIdentityPermission.cs
- PathNode.cs
- TemplateKey.cs
- WsdlImporterElement.cs
- ErrorFormatterPage.cs
- StyleSheetDesigner.cs
- CodeExporter.cs
- _WinHttpWebProxyDataBuilder.cs
- Code.cs
- RequiredFieldValidator.cs
- SQLDecimalStorage.cs
- EntityKey.cs
- UrlPath.cs
- PkcsUtils.cs
- MultiBinding.cs
- Visual3DCollection.cs
- VisualStates.cs
- ObjectViewListener.cs
- XmlSchemaValidationException.cs
- InputScopeAttribute.cs
- EncryptedXml.cs
- EntityUtil.cs
- BrowserCapabilitiesFactoryBase.cs
- MethodCallConverter.cs
- WhitespaceRuleReader.cs
- DataServiceQueryProvider.cs
- UriTemplateVariablePathSegment.cs
- HScrollProperties.cs
- DesignerForm.cs
- ApplicationHost.cs
- Parameter.cs
- MenuItem.cs
- CloudCollection.cs