Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- GridViewSortEventArgs.cs
- ConfigXmlText.cs
- AnnotationResource.cs
- DragDrop.cs
- VideoDrawing.cs
- CriticalFinalizerObject.cs
- MailWriter.cs
- Menu.cs
- UInt64Converter.cs
- AttachInfo.cs
- TabRenderer.cs
- ClientTarget.cs
- ListViewItemSelectionChangedEvent.cs
- Blend.cs
- SctClaimSerializer.cs
- AssertFilter.cs
- WebPartDescription.cs
- FieldBuilder.cs
- Activity.cs
- Transform3D.cs
- FlowPosition.cs
- WebSysDescriptionAttribute.cs
- TextLine.cs
- TrackBarDesigner.cs
- Misc.cs
- ErrorStyle.cs
- RadioButtonRenderer.cs
- NameTable.cs
- SafeEventLogWriteHandle.cs
- WebPartConnectionsCancelEventArgs.cs
- OrderedDictionaryStateHelper.cs
- WebPartZoneBase.cs
- ControlIdConverter.cs
- WebColorConverter.cs
- DataSourceControl.cs
- OutputBuffer.cs
- ArrayHelper.cs
- Trace.cs
- UserPreferenceChangedEventArgs.cs
- DataGridLinkButton.cs
- Compiler.cs
- DataGridViewControlCollection.cs
- OutputCacheProfile.cs
- ContainerActivationHelper.cs
- MethodToken.cs
- UpdatePanel.cs
- Animatable.cs
- CodeIdentifier.cs
- HotSpot.cs
- StylusPointPropertyInfo.cs
- TimeSpanConverter.cs
- SignatureToken.cs
- XmlReader.cs
- CopyOnWriteList.cs
- ResXResourceWriter.cs
- CallbackValidatorAttribute.cs
- HandleCollector.cs
- UnsafeNativeMethods.cs
- DataGridTextBoxColumn.cs
- MetadataExporter.cs
- WsdlBuildProvider.cs
- RenderData.cs
- DbBuffer.cs
- ObjectTypeMapping.cs
- FreezableCollection.cs
- IisTraceWebEventProvider.cs
- IncrementalHitTester.cs
- HGlobalSafeHandle.cs
- Control.cs
- VectorCollection.cs
- PackageDigitalSignatureManager.cs
- CodeDelegateInvokeExpression.cs
- TextServicesCompartmentEventSink.cs
- DictionarySectionHandler.cs
- ApplicationId.cs
- EventLogInformation.cs
- COM2PropertyDescriptor.cs
- PeerInvitationResponse.cs
- XmlAttributes.cs
- BordersPage.cs
- WebPartEditVerb.cs
- FormViewInsertEventArgs.cs
- FormCollection.cs
- NativeCppClassAttribute.cs
- FactoryGenerator.cs
- MenuTracker.cs
- HScrollProperties.cs
- PersistChildrenAttribute.cs
- SpeakCompletedEventArgs.cs
- KnownColorTable.cs
- ParserStreamGeometryContext.cs
- XmlChildNodes.cs
- AesManaged.cs
- FormViewInsertedEventArgs.cs
- DelayedRegex.cs
- ConfigurationElementProperty.cs
- RemoteWebConfigurationHost.cs
- CrossAppDomainChannel.cs
- ClientOptions.cs
- AnnotationHighlightLayer.cs