Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ScriptResourceAttribute.cs
- WebZoneDesigner.cs
- DataTransferEventArgs.cs
- InputMethod.cs
- EventRouteFactory.cs
- MimeObjectFactory.cs
- XmlParser.cs
- ProcessModuleCollection.cs
- _SSPIWrapper.cs
- ColumnPropertiesGroup.cs
- HwndHost.cs
- RequiredArgumentAttribute.cs
- ContextTokenTypeConverter.cs
- DockEditor.cs
- Line.cs
- ManualResetEvent.cs
- ComponentManagerBroker.cs
- ResourceAssociationTypeEnd.cs
- ListViewContainer.cs
- ExpressionNode.cs
- DbDeleteCommandTree.cs
- AssemblyInfo.cs
- Rotation3D.cs
- ExpressionNode.cs
- ColumnCollection.cs
- PowerStatus.cs
- GenericWebPart.cs
- WebServiceParameterData.cs
- IndentedTextWriter.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- MaxValueConverter.cs
- RewritingProcessor.cs
- ParenthesizePropertyNameAttribute.cs
- UnionCodeGroup.cs
- ImageBrush.cs
- ClassDataContract.cs
- DataGridTablesFactory.cs
- Profiler.cs
- Configuration.cs
- RubberbandSelector.cs
- PropertyDescriptor.cs
- StringArrayConverter.cs
- VectorValueSerializer.cs
- PtsHelper.cs
- Source.cs
- XmlEntityReference.cs
- XdrBuilder.cs
- RC2.cs
- LineVisual.cs
- OdbcConnectionFactory.cs
- Attributes.cs
- SubpageParagraph.cs
- AnonymousIdentificationModule.cs
- StaticExtension.cs
- CultureSpecificCharacterBufferRange.cs
- TextReader.cs
- ContentDisposition.cs
- GiveFeedbackEventArgs.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- ProxyElement.cs
- RenderDataDrawingContext.cs
- DataServiceContext.cs
- SchemaTableColumn.cs
- Model3DGroup.cs
- PackageDigitalSignature.cs
- ObjectCacheHost.cs
- RecognizedWordUnit.cs
- CombinedGeometry.cs
- SelectionListDesigner.cs
- Color.cs
- SoundPlayer.cs
- CachedPathData.cs
- AuthenticateEventArgs.cs
- Number.cs
- XmlSchemaObjectTable.cs
- RewritingProcessor.cs
- CompiledQuery.cs
- DefaultValueConverter.cs
- InstanceHandleReference.cs
- SafeIUnknown.cs
- ServiceTimeoutsElement.cs
- ArrayTypeMismatchException.cs
- ItemCheckEvent.cs
- EventLogTraceListener.cs
- CodePageEncoding.cs
- CryptoKeySecurity.cs
- SHA256Managed.cs
- CuspData.cs
- TcpSocketManager.cs
- UpdateRecord.cs
- MetadataWorkspace.cs
- DesignTimeParseData.cs
- StickyNoteContentControl.cs
- EventHandlerService.cs
- SharedTcpTransportManager.cs
- FixedSOMTable.cs
- TableLayoutPanelResizeGlyph.cs
- ClosableStream.cs
- NullableLongMinMaxAggregationOperator.cs