Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Util / Profiler.cs / 1305376 / 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
- EntityWithChangeTrackerStrategy.cs
- DictionaryMarkupSerializer.cs
- OleDbPropertySetGuid.cs
- ObjectViewQueryResultData.cs
- DiagnosticTrace.cs
- ObjectQueryProvider.cs
- Color.cs
- PassportAuthenticationEventArgs.cs
- embossbitmapeffect.cs
- WebConfigurationFileMap.cs
- CornerRadius.cs
- DataGridViewSelectedCellCollection.cs
- PersonalizationStateQuery.cs
- ConnectionOrientedTransportManager.cs
- NewItemsContextMenuStrip.cs
- StylusButton.cs
- CustomServiceCredentials.cs
- XamlParser.cs
- serverconfig.cs
- BamlRecordReader.cs
- Line.cs
- MemberPathMap.cs
- PrintPreviewDialog.cs
- SoapExtensionTypeElementCollection.cs
- LockCookie.cs
- ExtensionSimplifierMarkupObject.cs
- XmlArrayItemAttribute.cs
- WebPartsPersonalizationAuthorization.cs
- DataControlCommands.cs
- PenLineJoinValidation.cs
- XmlElementCollection.cs
- PolyLineSegmentFigureLogic.cs
- HostingEnvironmentSection.cs
- XmlILModule.cs
- RowSpanVector.cs
- BindingManagerDataErrorEventArgs.cs
- DayRenderEvent.cs
- SerializableAttribute.cs
- WindowsListViewItem.cs
- PrePrepareMethodAttribute.cs
- AppSettingsExpressionEditor.cs
- VoiceInfo.cs
- GroupBox.cs
- CollectionChangeEventArgs.cs
- ObjectStateManager.cs
- OleDbParameterCollection.cs
- ListManagerBindingsCollection.cs
- IgnoreFlushAndCloseStream.cs
- DbMetaDataCollectionNames.cs
- NamedObjectList.cs
- DispatcherExceptionFilterEventArgs.cs
- SafeRightsManagementSessionHandle.cs
- Quad.cs
- UInt64Converter.cs
- AppearanceEditorPart.cs
- DependencyObjectProvider.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- RequestCachingSection.cs
- RuntimeConfig.cs
- ArrayExtension.cs
- TextDocumentView.cs
- HttpDateParse.cs
- QueryOperationResponseOfT.cs
- PropertyValueEditor.cs
- MemberPath.cs
- SQLByteStorage.cs
- EmptyQuery.cs
- DictionarySurrogate.cs
- PropertyKey.cs
- BindingValueChangedEventArgs.cs
- RelationshipType.cs
- BuildProviderUtils.cs
- Path.cs
- DataObject.cs
- HexParser.cs
- CompilerTypeWithParams.cs
- PageThemeCodeDomTreeGenerator.cs
- BitStack.cs
- DataGridColumnsPage.cs
- RadioButtonBaseAdapter.cs
- SmiEventSink.cs
- ExpressionList.cs
- FileSecurity.cs
- DirectionalLight.cs
- TemplatePropertyEntry.cs
- ConfigurationSettings.cs
- ApplicationId.cs
- CompoundFileStreamReference.cs
- DataSourceIDConverter.cs
- ColumnHeaderConverter.cs
- Configuration.cs
- PropertiesTab.cs
- FilterElement.cs
- EdmType.cs
- Condition.cs
- ConfigurationConverterBase.cs
- VectorAnimationUsingKeyFrames.cs
- QueryCacheManager.cs
- LogicalExpr.cs
- SoapHeaderAttribute.cs