Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / 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. //------------------------------------------------------------------------------ //// 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- UserPreferenceChangingEventArgs.cs
- EncryptedKey.cs
- EncoderParameters.cs
- RedBlackList.cs
- UIElement3D.cs
- ContextProperty.cs
- WindowsPen.cs
- ConnectionManagementSection.cs
- OperandQuery.cs
- ParameterEditorUserControl.cs
- ReadWriteSpinLock.cs
- TransformGroup.cs
- AdapterDictionary.cs
- RadioButtonFlatAdapter.cs
- XmlArrayAttribute.cs
- MediaContextNotificationWindow.cs
- Pair.cs
- HyperlinkAutomationPeer.cs
- WebServiceBindingAttribute.cs
- RefreshPropertiesAttribute.cs
- SqlProvider.cs
- InvalidFilterCriteriaException.cs
- ContainerUtilities.cs
- SqlGenericUtil.cs
- SmiEventSink_Default.cs
- SQLResource.cs
- InnerItemCollectionView.cs
- BitmapInitialize.cs
- SecurityState.cs
- SecurityTokenValidationException.cs
- SamlConstants.cs
- BuildProviderCollection.cs
- MessageSecurityProtocolFactory.cs
- DynamicPropertyReader.cs
- TypeUnloadedException.cs
- WebPartEventArgs.cs
- ConnectionStringsExpressionBuilder.cs
- EntityViewGenerator.cs
- MediaCommands.cs
- ErrorFormatter.cs
- TableCell.cs
- ModelPropertyImpl.cs
- SimpleWebHandlerParser.cs
- Atom10FormatterFactory.cs
- HtmlButton.cs
- TreeWalker.cs
- sortedlist.cs
- safePerfProviderHandle.cs
- BasicHttpSecurity.cs
- HebrewCalendar.cs
- Accessible.cs
- ControlValuePropertyAttribute.cs
- ProviderUtil.cs
- UserPreferenceChangedEventArgs.cs
- SoapProcessingBehavior.cs
- JapaneseCalendar.cs
- TdsValueSetter.cs
- TrackingDataItem.cs
- ResourceManagerWrapper.cs
- URLAttribute.cs
- Line.cs
- PtsCache.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- ScalarOps.cs
- Events.cs
- XsltArgumentList.cs
- HttpValueCollection.cs
- Camera.cs
- CustomCategoryAttribute.cs
- WindowsGrip.cs
- HelloMessageCD1.cs
- TextInfo.cs
- _ShellExpression.cs
- XmlCharCheckingWriter.cs
- BrowserDefinition.cs
- Viewport2DVisual3D.cs
- ObfuscateAssemblyAttribute.cs
- SafeRightsManagementQueryHandle.cs
- UpdateCommand.cs
- ServiceDurableInstanceContextProvider.cs
- BulletedListEventArgs.cs
- NotifyParentPropertyAttribute.cs
- SiteOfOriginContainer.cs
- CodeTypeDelegate.cs
- PersonalizationEntry.cs
- GradientStop.cs
- CategoryState.cs
- Literal.cs
- ComponentEvent.cs
- recordstatescratchpad.cs
- counter.cs
- Rect3DValueSerializer.cs
- ListItemsPage.cs
- HwndSource.cs
- RequiredFieldValidator.cs
- SqlDataRecord.cs
- Privilege.cs
- EtwTrace.cs
- BuilderInfo.cs
- SystemException.cs