Code:
/ FX-1434 / FX-1434 / 1.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
- ListViewTableCell.cs
- SchemaTypeEmitter.cs
- PathFigureCollectionValueSerializer.cs
- XmlSerializableReader.cs
- WebPartManagerDesigner.cs
- DebuggerAttributes.cs
- SplashScreen.cs
- BindingNavigator.cs
- ConfigXmlComment.cs
- UnsafeMethods.cs
- ServiceInfoCollection.cs
- selecteditemcollection.cs
- PrinterSettings.cs
- milrender.cs
- NativeWindow.cs
- FixedHyperLink.cs
- Condition.cs
- SQLBytesStorage.cs
- ProcessManager.cs
- SpeechSynthesizer.cs
- TransformBlockRequest.cs
- DesignerWithHeader.cs
- SamlAssertion.cs
- Screen.cs
- VersionPair.cs
- JsonSerializer.cs
- ClientUIRequest.cs
- ForeignKeyFactory.cs
- PlainXmlSerializer.cs
- XmlKeywords.cs
- SqlCachedBuffer.cs
- OutgoingWebResponseContext.cs
- PreProcessInputEventArgs.cs
- GridViewDeleteEventArgs.cs
- WindowsAuthenticationEventArgs.cs
- _NativeSSPI.cs
- WebPartActionVerb.cs
- UrlAuthFailedErrorFormatter.cs
- SoapClientProtocol.cs
- WebPartTransformerCollection.cs
- ListChangedEventArgs.cs
- SecUtil.cs
- InputMethodStateChangeEventArgs.cs
- PropertyPathWorker.cs
- MetaType.cs
- EntityRecordInfo.cs
- AttachInfo.cs
- StrokeIntersection.cs
- HttpListenerElement.cs
- ObjectStorage.cs
- ObfuscationAttribute.cs
- LineBreak.cs
- PieceDirectory.cs
- ValidatorCollection.cs
- DebugView.cs
- InputBindingCollection.cs
- CTreeGenerator.cs
- SqlBulkCopyColumnMappingCollection.cs
- NativeCppClassAttribute.cs
- SoapSchemaImporter.cs
- WindowsListViewScroll.cs
- DataGridViewLinkCell.cs
- SelectionEditingBehavior.cs
- DBDataPermission.cs
- ContentType.cs
- CodeIdentifiers.cs
- coordinatorscratchpad.cs
- SymmetricKeyWrap.cs
- ExclusiveNamedPipeTransportManager.cs
- AttachmentService.cs
- HtmlTableCellCollection.cs
- WindowsFormsHostAutomationPeer.cs
- LiteralDesigner.cs
- GroupByExpressionRewriter.cs
- MediaTimeline.cs
- XmlElementCollection.cs
- AccessDataSource.cs
- BaseServiceProvider.cs
- AutoSizeComboBox.cs
- PageEventArgs.cs
- FileUtil.cs
- SizeAnimationBase.cs
- HttpConfigurationSystem.cs
- EmptyElement.cs
- PositiveTimeSpanValidator.cs
- BaseProcessor.cs
- GatewayDefinition.cs
- BmpBitmapDecoder.cs
- CompiledXpathExpr.cs
- Sql8ExpressionRewriter.cs
- ParsedAttributeCollection.cs
- ReferentialConstraint.cs
- PathData.cs
- BuildResultCache.cs
- LicFileLicenseProvider.cs
- SqlEnums.cs
- DataGridViewCellStateChangedEventArgs.cs
- OdbcConnectionString.cs
- CodeGenerator.cs
- BoundsDrawingContextWalker.cs