Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- StyleCollection.cs
- BuildProvider.cs
- DataGridViewColumnCollectionEditor.cs
- WebPartMovingEventArgs.cs
- EventSetter.cs
- XmlNamespaceMappingCollection.cs
- TextServicesCompartmentContext.cs
- xdrvalidator.cs
- OleDbCommandBuilder.cs
- OleDbInfoMessageEvent.cs
- CannotUnloadAppDomainException.cs
- IpcClientChannel.cs
- NetworkInformationPermission.cs
- DictionaryItemsCollection.cs
- CodeDomLoader.cs
- UmAlQuraCalendar.cs
- Attachment.cs
- ProfilePropertySettingsCollection.cs
- XmlConvert.cs
- RequestQueryProcessor.cs
- DynamicFilter.cs
- AmbientLight.cs
- SerializationInfo.cs
- FormClosingEvent.cs
- HtmlShim.cs
- EdmFunction.cs
- MailWriter.cs
- SoapObjectInfo.cs
- TreeNodeCollection.cs
- DispatcherObject.cs
- StoreAnnotationsMap.cs
- DiffuseMaterial.cs
- WithStatement.cs
- MissingMethodException.cs
- ErrorTolerantObjectWriter.cs
- DropDownHolder.cs
- XmlDocumentSerializer.cs
- AncillaryOps.cs
- InkPresenter.cs
- Stroke.cs
- VisualBasicSettings.cs
- EmptyEnumerator.cs
- StatusBarAutomationPeer.cs
- DesignTimeParseData.cs
- ItemAutomationPeer.cs
- HtmlObjectListAdapter.cs
- DataGridViewRowCancelEventArgs.cs
- StringCollection.cs
- DataServiceProcessingPipelineEventArgs.cs
- PictureBox.cs
- StyleSelector.cs
- ContravarianceAdapter.cs
- Publisher.cs
- WindowsScrollBarBits.cs
- TextElementAutomationPeer.cs
- HtmlControl.cs
- ListViewDeleteEventArgs.cs
- ProtocolsConfigurationEntry.cs
- StaticSiteMapProvider.cs
- IndentedWriter.cs
- StringFunctions.cs
- InputLanguageSource.cs
- HtmlControlAdapter.cs
- StrongNameUtility.cs
- SecurityTokenProvider.cs
- ACL.cs
- ElementHost.cs
- CellIdBoolean.cs
- SessionStateItemCollection.cs
- SqlCacheDependency.cs
- HyperLinkDesigner.cs
- ReceiveActivityValidator.cs
- OLEDB_Util.cs
- RuntimeWrappedException.cs
- QueryAccessibilityHelpEvent.cs
- ZipIOLocalFileBlock.cs
- PartialCachingControl.cs
- WmlMobileTextWriter.cs
- EntityDataSourceState.cs
- ToolStripSettings.cs
- CodeSnippetCompileUnit.cs
- StringFunctions.cs
- ResourceExpressionEditorSheet.cs
- Substitution.cs
- Operators.cs
- _Win32.cs
- GeometryDrawing.cs
- RangeValidator.cs
- CancelEventArgs.cs
- ObjectContextServiceProvider.cs
- AsyncOperation.cs
- GenericRootAutomationPeer.cs
- PointConverter.cs
- IndependentAnimationStorage.cs
- BitmapEffectInputConnector.cs
- TextElementEditingBehaviorAttribute.cs
- TreeNodeCollection.cs
- ChildrenQuery.cs
- Compiler.cs
- Overlapped.cs