Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / clr / src / BCL / System / Diagnostics / LogSwitch.cs / 1 / LogSwitch.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== namespace System.Diagnostics { using System; using System.IO; using System.Collections; [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. // public LogSwitch(String name, String description, LogSwitch parent) { if ((name != null) && (parent != null) ) { if (name.Length == 0) throw new ArgumentOutOfRangeException ("Name", Environment.GetResourceString("Argument_StringZeroLength")); 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")); } 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; } 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. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== namespace System.Diagnostics { using System; using System.IO; using System.Collections; [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. // public LogSwitch(String name, String description, LogSwitch parent) { if ((name != null) && (parent != null) ) { if (name.Length == 0) throw new ArgumentOutOfRangeException ("Name", Environment.GetResourceString("Argument_StringZeroLength")); 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")); } 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; } 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
- ScopedKnownTypes.cs
- PropertyRecord.cs
- WsatStrings.cs
- ExceptionRoutedEventArgs.cs
- UxThemeWrapper.cs
- ProviderConnectionPoint.cs
- CaseStatementSlot.cs
- KeyPullup.cs
- MostlySingletonList.cs
- DispatcherEventArgs.cs
- AnnotationAdorner.cs
- Stylus.cs
- DataGridViewCellStyleConverter.cs
- HostExecutionContextManager.cs
- NavigationExpr.cs
- TextDecoration.cs
- HttpHostedTransportConfiguration.cs
- TextTreeInsertUndoUnit.cs
- XmlDocumentViewSchema.cs
- GacUtil.cs
- AggregateNode.cs
- ImageField.cs
- WebServiceParameterData.cs
- QueryResponse.cs
- DbDataSourceEnumerator.cs
- DocumentReferenceCollection.cs
- HttpProtocolImporter.cs
- RadioButtonList.cs
- Monitor.cs
- ProcessManager.cs
- _AutoWebProxyScriptHelper.cs
- DesignerVerbCollection.cs
- Events.cs
- QueryStringParameter.cs
- RadioButtonStandardAdapter.cs
- ImageSource.cs
- LicenseException.cs
- SolidBrush.cs
- ResourceReader.cs
- HostTimeoutsElement.cs
- lengthconverter.cs
- Rfc2898DeriveBytes.cs
- Stopwatch.cs
- ClientScriptManager.cs
- XmlUnspecifiedAttribute.cs
- ParameterRetriever.cs
- HttpRuntimeSection.cs
- MenuItemStyle.cs
- CodeConstructor.cs
- PropertyMetadata.cs
- SrgsToken.cs
- MorphHelper.cs
- XmlName.cs
- ExplicitDiscriminatorMap.cs
- XamlSerializer.cs
- DynamicDataResources.Designer.cs
- AccessibleObject.cs
- ZipIOCentralDirectoryBlock.cs
- _ScatterGatherBuffers.cs
- MonitoringDescriptionAttribute.cs
- ClientBuildManagerCallback.cs
- TypedElement.cs
- Opcode.cs
- DynamicDataManager.cs
- ApplicationInterop.cs
- TreeIterator.cs
- PropertyDescriptorGridEntry.cs
- EntryWrittenEventArgs.cs
- RadioButtonPopupAdapter.cs
- Rectangle.cs
- FilterException.cs
- PackWebRequest.cs
- XPathNavigator.cs
- SafeLocalMemHandle.cs
- DataFormats.cs
- RoutedEventValueSerializer.cs
- CfgArc.cs
- SignatureToken.cs
- SeverityFilter.cs
- Main.cs
- WebPartDisplayModeEventArgs.cs
- PropertyChangeTracker.cs
- TextTreeObjectNode.cs
- ConstrainedDataObject.cs
- EntityKeyElement.cs
- EmptyStringExpandableObjectConverter.cs
- _ProxyRegBlob.cs
- ComContractElementCollection.cs
- WindowsSysHeader.cs
- KeySpline.cs
- XmlDocumentSurrogate.cs
- QueryPageSettingsEventArgs.cs
- QilCloneVisitor.cs
- KeyManager.cs
- ACL.cs
- WindowsGraphics2.cs
- CompilationLock.cs
- SingleTagSectionHandler.cs
- StdValidatorsAndConverters.cs
- SecurityAccessDeniedException.cs