Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Diagnostics / LogSwitch.cs / 1305376 / LogSwitch.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== namespace System.Diagnostics { using System; using System.IO; using System.Collections; using System.Runtime.Versioning; using System.Diagnostics.Contracts; [Serializable] internal class LogSwitch { // ! WARNING ! // If any fields are added/deleted/modified, perform the // same in the EE code (debugdebugger.cpp) internal String strName; internal String strDescription; private LogSwitch ParentSwitch; private LogSwitch[] ChildSwitch; internal LoggingLevels iLevel; internal LoggingLevels iOldLevel; private int iNumChildren; private int iChildArraySize; // ! END WARNING ! private LogSwitch () { } // Constructs a LogSwitch. A LogSwitch is used to categorize log messages. // // All switches (except for the global LogSwitch) have a parent LogSwitch. // [System.Security.SecuritySafeCritical] // auto-generated public LogSwitch(String name, String description, LogSwitch parent) { if (name != null && name.Length == 0) throw new ArgumentOutOfRangeException("Name", Environment.GetResourceString("Argument_StringZeroLength")); Contract.EndContractBlock(); if ((name != null) && (parent != null)) { strName = name; strDescription = description; iLevel = LoggingLevels.ErrorLevel; iOldLevel = iLevel; // update the parent switch to reflect this child switch parent.AddChildSwitch (this); ParentSwitch = parent; ChildSwitch = null; iNumChildren = 0; iChildArraySize = 0; Log.m_Hashtable.Add (strName, this); // Call into the EE to let it know about the creation of // this switch Log.AddLogSwitch (this); // update switch count Log.iNumOfSwitches++; } else throw new ArgumentNullException ((name==null ? "name" : "parent")); } [System.Security.SecuritySafeCritical] // auto-generated internal LogSwitch(String name, String description) { strName = name; strDescription = description; iLevel = LoggingLevels.ErrorLevel; iOldLevel = iLevel; ParentSwitch = null; ChildSwitch = null; iNumChildren = 0; iChildArraySize = 0; Log.m_Hashtable.Add (strName, this); // Call into the EE to let it know about the creation of // this switch Log.AddLogSwitch (this); // update switch count Log.iNumOfSwitches++; } // Get property returns the name of the switch public virtual String Name { get { return strName;} } // Get property returns the description of the switch public virtual String Description { get {return strDescription;} } // Get property returns the parent of the switch public virtual LogSwitch Parent { get { return ParentSwitch; } } // Property to Get/Set the level of log messages which are "on" for the switch. // public virtual LoggingLevels MinimumLevel { get { return iLevel; } [System.Security.SecuritySafeCritical] // auto-generated [ResourceExposure(ResourceScope.None)] [ResourceConsumption(ResourceScope.Process, ResourceScope.Process)] set { iLevel = value; iOldLevel = value; String strParentName = ParentSwitch!=null ? ParentSwitch.Name : ""; if (Debugger.IsAttached) Log.ModifyLogSwitch ((int)iLevel, strName, strParentName); Log.InvokeLogSwitchLevelHandlers (this, iLevel); } } // Checks if the given level is "on" for this switch or one of its parents. // public virtual bool CheckLevel(LoggingLevels level) { if (iLevel > level) { // recurse through the list till parent is hit. if (this.ParentSwitch == null) return false; else return this.ParentSwitch.CheckLevel (level); } else return true; } // Returns a switch with the particular name, if any. Returns null if no // such switch exists. public static LogSwitch GetSwitch(String name) { return (LogSwitch)Log.m_Hashtable[name]; } private void AddChildSwitch (LogSwitch child) { if (iChildArraySize <= iNumChildren) { int iIncreasedSize; if (iChildArraySize == 0) iIncreasedSize = 10; else iIncreasedSize = (iChildArraySize * 3) / 2; // increase child array size in chunks of 4 LogSwitch[] newChildSwitchArray = new LogSwitch [iIncreasedSize]; // copy the old array objects into the new one. if (iNumChildren > 0) Array.Copy(ChildSwitch, newChildSwitchArray, iNumChildren); iChildArraySize = iIncreasedSize; ChildSwitch = newChildSwitchArray; } ChildSwitch [iNumChildren++] = child; } } } // 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
- RecommendedAsConfigurableAttribute.cs
- XPathNodePointer.cs
- GradientStop.cs
- EditorPartChrome.cs
- CommandEventArgs.cs
- HwndAppCommandInputProvider.cs
- StrokeNodeOperations2.cs
- CodeAttachEventStatement.cs
- SendMailErrorEventArgs.cs
- Attributes.cs
- CancellationTokenRegistration.cs
- StrongName.cs
- DataObjectCopyingEventArgs.cs
- HtmlTernaryTree.cs
- ParameterCollection.cs
- DataServiceRequest.cs
- DataChangedEventManager.cs
- WmpBitmapEncoder.cs
- CustomErrorsSection.cs
- WsiProfilesElement.cs
- VectorKeyFrameCollection.cs
- ObjectItemCollection.cs
- SoapServerMessage.cs
- Metadata.cs
- ToolZone.cs
- OleDbDataAdapter.cs
- WmlImageAdapter.cs
- SettingsPropertyValue.cs
- TypeDescriptor.cs
- CapabilitiesRule.cs
- SiteMapNodeItemEventArgs.cs
- SerializationFieldInfo.cs
- InfoCardBaseException.cs
- InfiniteTimeSpanConverter.cs
- SQLBoolean.cs
- Helpers.cs
- XmlBinaryReader.cs
- WeakReferenceKey.cs
- XmlAttributeHolder.cs
- DataBoundControlAdapter.cs
- AccessText.cs
- PersonalizationState.cs
- RunClient.cs
- ContextQuery.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- ReflectPropertyDescriptor.cs
- SourceFileInfo.cs
- DataTemplateKey.cs
- DataControlField.cs
- ReservationNotFoundException.cs
- WindowShowOrOpenTracker.cs
- SiteIdentityPermission.cs
- CodeGen.cs
- AVElementHelper.cs
- DataGridColumnHeaderItemAutomationPeer.cs
- ParseHttpDate.cs
- clipboard.cs
- UnauthorizedWebPart.cs
- ObjectSet.cs
- EntityDataSourceSelectedEventArgs.cs
- HttpException.cs
- TypeInformation.cs
- PanelStyle.cs
- Metadata.cs
- AdRotator.cs
- ThicknessKeyFrameCollection.cs
- HasCopySemanticsAttribute.cs
- SuppressIldasmAttribute.cs
- ButtonBaseDesigner.cs
- TimeSpanValidatorAttribute.cs
- PrintDialogDesigner.cs
- EnumerableRowCollectionExtensions.cs
- CodeIdentifiers.cs
- CodeDirectionExpression.cs
- SapiAttributeParser.cs
- DrawingGroup.cs
- ContainerUIElement3D.cs
- XamlToRtfWriter.cs
- GeometryGroup.cs
- _ListenerRequestStream.cs
- LayoutInformation.cs
- CompiledELinqQueryState.cs
- InvokeProviderWrapper.cs
- TransportationConfigurationTypeInstallComponent.cs
- XhtmlConformanceSection.cs
- TransformConverter.cs
- TableAdapterManagerHelper.cs
- ObjectQuery_EntitySqlExtensions.cs
- DataViewSetting.cs
- FrameworkElement.cs
- ResourceExpressionBuilder.cs
- KeyFrames.cs
- ZipPackagePart.cs
- DetailsViewDeletedEventArgs.cs
- QueryOutputWriter.cs
- HttpValueCollection.cs
- UriTemplateHelpers.cs
- BlockCollection.cs
- WindowsAuthenticationModule.cs
- IteratorDescriptor.cs