Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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();
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EventEntry.cs
- URLAttribute.cs
- AsyncPostBackErrorEventArgs.cs
- DetailsViewInsertEventArgs.cs
- GetFileNameResult.cs
- ImageBrush.cs
- RijndaelCryptoServiceProvider.cs
- ElementNotAvailableException.cs
- MessageSmuggler.cs
- SecureConversationServiceCredential.cs
- WebPartMinimizeVerb.cs
- SortedSet.cs
- ListViewGroupItemCollection.cs
- SqlDependencyUtils.cs
- MappingMetadataHelper.cs
- Select.cs
- DbDeleteCommandTree.cs
- RightsManagementInformation.cs
- SystemTcpConnection.cs
- XmlCustomFormatter.cs
- BufferedOutputAsyncStream.cs
- Aes.cs
- TimeIntervalCollection.cs
- ListViewUpdatedEventArgs.cs
- WebPartEditorOkVerb.cs
- OracleNumber.cs
- AssociatedControlConverter.cs
- BaseDataBoundControl.cs
- AppLevelCompilationSectionCache.cs
- DataControlFieldCell.cs
- SqlDataSourceView.cs
- DataView.cs
- RequiredAttributeAttribute.cs
- MetafileHeader.cs
- OdbcDataAdapter.cs
- ActivitiesCollection.cs
- MemberMaps.cs
- TypeValidationEventArgs.cs
- TypeConverterAttribute.cs
- ScrollData.cs
- CompilationUtil.cs
- UDPClient.cs
- MarshalDirectiveException.cs
- PerformanceCounterManager.cs
- ListSourceHelper.cs
- FixedSOMTextRun.cs
- HttpsTransportElement.cs
- Registry.cs
- ConnectionPointCookie.cs
- MouseActionValueSerializer.cs
- TemplatedAdorner.cs
- StringAnimationBase.cs
- Int16AnimationBase.cs
- Events.cs
- QuinticEase.cs
- Choices.cs
- Command.cs
- BinaryConverter.cs
- ArglessEventHandlerProxy.cs
- MiniLockedBorderGlyph.cs
- pingexception.cs
- IteratorFilter.cs
- XmlDataCollection.cs
- InternalCache.cs
- SmiEventSink.cs
- SSmlParser.cs
- MultipartIdentifier.cs
- ResourceContainer.cs
- FontUnitConverter.cs
- DataExchangeServiceBinder.cs
- TableRow.cs
- WsdlParser.cs
- SqlXml.cs
- WaitHandle.cs
- ExecutionContext.cs
- ToolStripInSituService.cs
- StrongNameIdentityPermission.cs
- LineGeometry.cs
- ValidatorUtils.cs
- JumpList.cs
- Win32.cs
- DynamicAttribute.cs
- CapabilitiesRule.cs
- DataGridColumnCollection.cs
- TraceContextRecord.cs
- SqlBuffer.cs
- MatchAttribute.cs
- TextContainerChangedEventArgs.cs
- SettingsContext.cs
- WeakReference.cs
- PermissionSetTriple.cs
- GraphicsState.cs
- MarshalByRefObject.cs
- AnimationClockResource.cs
- AspNetSynchronizationContext.cs
- VectorCollectionConverter.cs
- RtfToXamlLexer.cs
- AutoGeneratedFieldProperties.cs
- SqlDependencyListener.cs
- MimeTextImporter.cs