Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / xsp / System / Web / PerfCounters.cs / 1 / PerfCounters.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* PerfCounters class
*/
namespace System.Web {
using System.Web.Util;
using System.Threading;
using System.Runtime.InteropServices;
internal sealed class PerfInstanceDataHandle: SafeHandle {
internal PerfInstanceDataHandle() : base(IntPtr.Zero, true) {
}
internal IntPtr UnsafeHandle {
get { return handle; }
}
public override bool IsInvalid {
get { return handle == IntPtr.Zero; }
}
override protected bool ReleaseHandle() {
UnsafeNativeMethods.PerfCloseAppCounters(handle);
handle = IntPtr.Zero;
return true;
}
}
internal sealed class PerfCounters {
private static PerfInstanceDataHandle _instance = null;
private static IntPtr _global = IntPtr.Zero;
private static IntPtr _stateService = IntPtr.Zero;
private PerfCounters () {}
internal static void Open(string appName) {
Debug.Assert(appName != null);
OpenCounter(appName);
}
internal static void OpenStateCounters() {
OpenCounter(null);
}
// The app name should either be a valid app name or be 'null' to get the state service
// counters initialized
private static void OpenCounter(string appName) {
try {
// Don't activate perf counters if webengine.dll isn't loaded
if (! HttpRuntime.IsEngineLoaded)
return;
// Open the global counters
if (_global == IntPtr.Zero) {
_global = UnsafeNativeMethods.PerfOpenGlobalCounters();
}
// If appName is null, then we want the state counters
if (appName == null) {
if (_stateService == IntPtr.Zero) {
_stateService = UnsafeNativeMethods.PerfOpenStateCounters();
}
}
else {
if (appName != null) {
_instance = UnsafeNativeMethods.PerfOpenAppCounters(appName);
}
}
}
catch (Exception e) {
Debug.Trace("Perfcounters", "Exception: " + e.StackTrace);
}
}
// Make sure webengine.dll is loaded before attempting to call into it (ASURT 98531)
internal static void IncrementCounter(AppPerfCounter counter) {
if (_instance != null)
UnsafeNativeMethods.PerfIncrementCounter(_instance.UnsafeHandle, (int) counter);
}
internal static void DecrementCounter(AppPerfCounter counter) {
if (_instance != null)
UnsafeNativeMethods.PerfDecrementCounter(_instance.UnsafeHandle, (int) counter);
}
internal static void IncrementCounterEx(AppPerfCounter counter, int delta) {
if (_instance != null)
UnsafeNativeMethods.PerfIncrementCounterEx(_instance.UnsafeHandle, (int) counter, delta);
}
internal static void SetCounter(AppPerfCounter counter, int value) {
if (_instance != null)
UnsafeNativeMethods.PerfSetCounter(_instance.UnsafeHandle, (int) counter, value);
}
// It's important that this be debug only. We don't want production
// code to access shared memory that another process could corrupt.
#if DBG
internal static int GetCounter(AppPerfCounter counter) {
if (_instance != null)
return UnsafeNativeMethods.PerfGetCounter(_instance.UnsafeHandle, (int) counter);
else
return -1;
}
#endif
internal static int GetGlobalCounter(GlobalPerfCounter counter) {
if (_global != IntPtr.Zero)
return UnsafeNativeMethods.PerfGetCounter(_global, (int) counter);
else
return -1;
}
internal static void IncrementGlobalCounter(GlobalPerfCounter counter) {
if (_global != IntPtr.Zero)
UnsafeNativeMethods.PerfIncrementCounter(_global, (int) counter);
}
internal static void DecrementGlobalCounter(GlobalPerfCounter counter) {
if (_global != IntPtr.Zero)
UnsafeNativeMethods.PerfDecrementCounter(_global, (int) counter);
}
#if UNUSED_CODE
internal static void IncrementGlobalCounterEx(GlobalPerfCounter counter, int delta) {
if (_global != IntPtr.Zero)
UnsafeNativeMethods.PerfIncrementCounterEx(_global, (int) counter, delta);
}
#endif
internal static void SetGlobalCounter(GlobalPerfCounter counter, int value) {
if (_global != IntPtr.Zero)
UnsafeNativeMethods.PerfSetCounter(_global, (int) counter, value);
}
internal static void IncrementStateServiceCounter(StateServicePerfCounter counter) {
if (_stateService == IntPtr.Zero)
return;
UnsafeNativeMethods.PerfIncrementCounter(_stateService, (int) counter);
switch (counter) {
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_TOTAL:
IncrementGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_TOTAL);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_ACTIVE:
IncrementGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_ACTIVE);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_TIMED_OUT:
IncrementGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_TIMED_OUT);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_ABANDONED:
IncrementGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_ABANDONED);
break;
default:
break;
}
}
internal static void DecrementStateServiceCounter(StateServicePerfCounter counter) {
if (_stateService == IntPtr.Zero)
return;
UnsafeNativeMethods.PerfDecrementCounter(_stateService, (int) counter);
switch (counter) {
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_TOTAL:
DecrementGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_TOTAL);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_ACTIVE:
DecrementGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_ACTIVE);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_TIMED_OUT:
DecrementGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_TIMED_OUT);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_ABANDONED:
DecrementGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_ABANDONED);
break;
default:
break;
}
}
#if UNUSED_CODE
internal static void IncrementStateServiceCounterEx(StateServicePerfCounter counter, int delta) {
if (_stateService == IntPtr.Zero)
return;
UnsafeNativeMethods.PerfIncrementCounterEx(_stateService, (int) counter, delta);
switch (counter) {
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_TOTAL:
IncrementGlobalCounterEx(GlobalPerfCounter.STATE_SERVER_SESSIONS_TOTAL, delta);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_ACTIVE:
IncrementGlobalCounterEx(GlobalPerfCounter.STATE_SERVER_SESSIONS_ACTIVE, delta);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_TIMED_OUT:
IncrementGlobalCounterEx(GlobalPerfCounter.STATE_SERVER_SESSIONS_TIMED_OUT, delta);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_ABANDONED:
IncrementGlobalCounterEx(GlobalPerfCounter.STATE_SERVER_SESSIONS_ABANDONED, delta);
break;
default:
break;
}
}
#endif
internal static void SetStateServiceCounter(StateServicePerfCounter counter, int value) {
if (_stateService == IntPtr.Zero)
return;
UnsafeNativeMethods.PerfSetCounter(_stateService, (int) counter, value);
switch (counter) {
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_TOTAL:
SetGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_TOTAL, value);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_ACTIVE:
SetGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_ACTIVE, value);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_TIMED_OUT:
SetGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_TIMED_OUT, value);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_ABANDONED:
SetGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_ABANDONED, value);
break;
default:
break;
}
}
};
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* PerfCounters class
*/
namespace System.Web {
using System.Web.Util;
using System.Threading;
using System.Runtime.InteropServices;
internal sealed class PerfInstanceDataHandle: SafeHandle {
internal PerfInstanceDataHandle() : base(IntPtr.Zero, true) {
}
internal IntPtr UnsafeHandle {
get { return handle; }
}
public override bool IsInvalid {
get { return handle == IntPtr.Zero; }
}
override protected bool ReleaseHandle() {
UnsafeNativeMethods.PerfCloseAppCounters(handle);
handle = IntPtr.Zero;
return true;
}
}
internal sealed class PerfCounters {
private static PerfInstanceDataHandle _instance = null;
private static IntPtr _global = IntPtr.Zero;
private static IntPtr _stateService = IntPtr.Zero;
private PerfCounters () {}
internal static void Open(string appName) {
Debug.Assert(appName != null);
OpenCounter(appName);
}
internal static void OpenStateCounters() {
OpenCounter(null);
}
// The app name should either be a valid app name or be 'null' to get the state service
// counters initialized
private static void OpenCounter(string appName) {
try {
// Don't activate perf counters if webengine.dll isn't loaded
if (! HttpRuntime.IsEngineLoaded)
return;
// Open the global counters
if (_global == IntPtr.Zero) {
_global = UnsafeNativeMethods.PerfOpenGlobalCounters();
}
// If appName is null, then we want the state counters
if (appName == null) {
if (_stateService == IntPtr.Zero) {
_stateService = UnsafeNativeMethods.PerfOpenStateCounters();
}
}
else {
if (appName != null) {
_instance = UnsafeNativeMethods.PerfOpenAppCounters(appName);
}
}
}
catch (Exception e) {
Debug.Trace("Perfcounters", "Exception: " + e.StackTrace);
}
}
// Make sure webengine.dll is loaded before attempting to call into it (ASURT 98531)
internal static void IncrementCounter(AppPerfCounter counter) {
if (_instance != null)
UnsafeNativeMethods.PerfIncrementCounter(_instance.UnsafeHandle, (int) counter);
}
internal static void DecrementCounter(AppPerfCounter counter) {
if (_instance != null)
UnsafeNativeMethods.PerfDecrementCounter(_instance.UnsafeHandle, (int) counter);
}
internal static void IncrementCounterEx(AppPerfCounter counter, int delta) {
if (_instance != null)
UnsafeNativeMethods.PerfIncrementCounterEx(_instance.UnsafeHandle, (int) counter, delta);
}
internal static void SetCounter(AppPerfCounter counter, int value) {
if (_instance != null)
UnsafeNativeMethods.PerfSetCounter(_instance.UnsafeHandle, (int) counter, value);
}
// It's important that this be debug only. We don't want production
// code to access shared memory that another process could corrupt.
#if DBG
internal static int GetCounter(AppPerfCounter counter) {
if (_instance != null)
return UnsafeNativeMethods.PerfGetCounter(_instance.UnsafeHandle, (int) counter);
else
return -1;
}
#endif
internal static int GetGlobalCounter(GlobalPerfCounter counter) {
if (_global != IntPtr.Zero)
return UnsafeNativeMethods.PerfGetCounter(_global, (int) counter);
else
return -1;
}
internal static void IncrementGlobalCounter(GlobalPerfCounter counter) {
if (_global != IntPtr.Zero)
UnsafeNativeMethods.PerfIncrementCounter(_global, (int) counter);
}
internal static void DecrementGlobalCounter(GlobalPerfCounter counter) {
if (_global != IntPtr.Zero)
UnsafeNativeMethods.PerfDecrementCounter(_global, (int) counter);
}
#if UNUSED_CODE
internal static void IncrementGlobalCounterEx(GlobalPerfCounter counter, int delta) {
if (_global != IntPtr.Zero)
UnsafeNativeMethods.PerfIncrementCounterEx(_global, (int) counter, delta);
}
#endif
internal static void SetGlobalCounter(GlobalPerfCounter counter, int value) {
if (_global != IntPtr.Zero)
UnsafeNativeMethods.PerfSetCounter(_global, (int) counter, value);
}
internal static void IncrementStateServiceCounter(StateServicePerfCounter counter) {
if (_stateService == IntPtr.Zero)
return;
UnsafeNativeMethods.PerfIncrementCounter(_stateService, (int) counter);
switch (counter) {
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_TOTAL:
IncrementGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_TOTAL);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_ACTIVE:
IncrementGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_ACTIVE);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_TIMED_OUT:
IncrementGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_TIMED_OUT);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_ABANDONED:
IncrementGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_ABANDONED);
break;
default:
break;
}
}
internal static void DecrementStateServiceCounter(StateServicePerfCounter counter) {
if (_stateService == IntPtr.Zero)
return;
UnsafeNativeMethods.PerfDecrementCounter(_stateService, (int) counter);
switch (counter) {
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_TOTAL:
DecrementGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_TOTAL);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_ACTIVE:
DecrementGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_ACTIVE);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_TIMED_OUT:
DecrementGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_TIMED_OUT);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_ABANDONED:
DecrementGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_ABANDONED);
break;
default:
break;
}
}
#if UNUSED_CODE
internal static void IncrementStateServiceCounterEx(StateServicePerfCounter counter, int delta) {
if (_stateService == IntPtr.Zero)
return;
UnsafeNativeMethods.PerfIncrementCounterEx(_stateService, (int) counter, delta);
switch (counter) {
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_TOTAL:
IncrementGlobalCounterEx(GlobalPerfCounter.STATE_SERVER_SESSIONS_TOTAL, delta);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_ACTIVE:
IncrementGlobalCounterEx(GlobalPerfCounter.STATE_SERVER_SESSIONS_ACTIVE, delta);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_TIMED_OUT:
IncrementGlobalCounterEx(GlobalPerfCounter.STATE_SERVER_SESSIONS_TIMED_OUT, delta);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_ABANDONED:
IncrementGlobalCounterEx(GlobalPerfCounter.STATE_SERVER_SESSIONS_ABANDONED, delta);
break;
default:
break;
}
}
#endif
internal static void SetStateServiceCounter(StateServicePerfCounter counter, int value) {
if (_stateService == IntPtr.Zero)
return;
UnsafeNativeMethods.PerfSetCounter(_stateService, (int) counter, value);
switch (counter) {
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_TOTAL:
SetGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_TOTAL, value);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_ACTIVE:
SetGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_ACTIVE, value);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_TIMED_OUT:
SetGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_TIMED_OUT, value);
break;
case StateServicePerfCounter.STATE_SERVICE_SESSIONS_ABANDONED:
SetGlobalCounter(GlobalPerfCounter.STATE_SERVER_SESSIONS_ABANDONED, value);
break;
default:
break;
}
}
};
}
// 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
- SwitchExpression.cs
- RelationHandler.cs
- selecteditemcollection.cs
- ToolStripAdornerWindowService.cs
- PKCS1MaskGenerationMethod.cs
- DispatcherExceptionFilterEventArgs.cs
- MD5.cs
- ProcessHostFactoryHelper.cs
- Rect.cs
- AttributeUsageAttribute.cs
- IpcPort.cs
- Qualifier.cs
- TextSelectionProcessor.cs
- ValidatorCollection.cs
- Int32Storage.cs
- EditorPartChrome.cs
- XPathNode.cs
- CodeDirectionExpression.cs
- DataGridPageChangedEventArgs.cs
- BaseDataList.cs
- RuntimeArgument.cs
- MediaSystem.cs
- HtmlTableCell.cs
- MethodCallConverter.cs
- RemoteWebConfigurationHostServer.cs
- MaterialCollection.cs
- BrushConverter.cs
- RunWorkerCompletedEventArgs.cs
- SHA384.cs
- GeneralTransform3DGroup.cs
- CaseCqlBlock.cs
- ConnectionManagementElementCollection.cs
- ISessionStateStore.cs
- FreeFormPanel.cs
- TableLayoutRowStyleCollection.cs
- QueryRewriter.cs
- TreeViewHitTestInfo.cs
- RenderData.cs
- ResourceDefaultValueAttribute.cs
- WebEncodingValidator.cs
- BindingCollection.cs
- DataFormat.cs
- HttpProfileBase.cs
- ToolStripContentPanelDesigner.cs
- OracleConnectionString.cs
- LocatorPartList.cs
- ErrorStyle.cs
- HttpGetProtocolReflector.cs
- HttpCachePolicyWrapper.cs
- _ShellExpression.cs
- PolyQuadraticBezierSegment.cs
- CodeIterationStatement.cs
- _OSSOCK.cs
- TrackingStringDictionary.cs
- PartManifestEntry.cs
- IgnoreSectionHandler.cs
- CodeDomConfigurationHandler.cs
- IIS7ConfigurationLoader.cs
- Panel.cs
- ComplexBindingPropertiesAttribute.cs
- ObjectListFieldsPage.cs
- DateTimeParse.cs
- _NestedSingleAsyncResult.cs
- RenderDataDrawingContext.cs
- FormViewPageEventArgs.cs
- PostBackTrigger.cs
- DataGridViewAdvancedBorderStyle.cs
- InstanceDataCollection.cs
- HtmlShim.cs
- ConfigurationManagerHelperFactory.cs
- CollectionViewGroupInternal.cs
- HashHelper.cs
- NativeMethods.cs
- Button.cs
- ContextInformation.cs
- RadioButtonRenderer.cs
- CancelRequestedQuery.cs
- XmlSigningNodeWriter.cs
- PropertyValueChangedEvent.cs
- XPathScanner.cs
- DBPropSet.cs
- FacetDescriptionElement.cs
- XmlQueryCardinality.cs
- Keywords.cs
- Point3DValueSerializer.cs
- WindowsRichEdit.cs
- MultiPropertyDescriptorGridEntry.cs
- InstanceStoreQueryResult.cs
- PolicyManager.cs
- MimeMultiPart.cs
- MSAANativeProvider.cs
- Monitor.cs
- PrefixHandle.cs
- XslAst.cs
- SqlConnectionPoolGroupProviderInfo.cs
- TextTreeDeleteContentUndoUnit.cs
- Int32.cs
- SystemMulticastIPAddressInformation.cs
- HyperLinkColumn.cs
- BufferedGraphicsContext.cs