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
- XmlLoader.cs
- RuntimeConfig.cs
- PageParserFilter.cs
- WebConfigurationManager.cs
- TemplateColumn.cs
- SqlClientWrapperSmiStream.cs
- DesignTimeXamlWriter.cs
- _HeaderInfo.cs
- CqlQuery.cs
- PowerModeChangedEventArgs.cs
- _NativeSSPI.cs
- TableParaClient.cs
- UTF32Encoding.cs
- SoapFault.cs
- COSERVERINFO.cs
- SchemaEntity.cs
- StrokeNodeOperations2.cs
- DataGridCellsPresenter.cs
- RadioButtonRenderer.cs
- XmlSchemaInclude.cs
- PathFigureCollection.cs
- StandardTransformFactory.cs
- AudioLevelUpdatedEventArgs.cs
- SharedPersonalizationStateInfo.cs
- KeyGestureValueSerializer.cs
- SizeFConverter.cs
- UnmanagedMemoryAccessor.cs
- SmtpReplyReader.cs
- DataGridViewRowPrePaintEventArgs.cs
- PopupControlService.cs
- ExtendedPropertiesHandler.cs
- PersonalizableAttribute.cs
- ServiceHostingEnvironment.cs
- DetailsViewPagerRow.cs
- BamlLocalizabilityResolver.cs
- SqlRowUpdatingEvent.cs
- DtdParser.cs
- HtmlTable.cs
- Pts.cs
- LabelLiteral.cs
- ProjectionPlan.cs
- BadImageFormatException.cs
- ImmComposition.cs
- AttributeProviderAttribute.cs
- ClientSettings.cs
- MemberRelationshipService.cs
- ProfileSettingsCollection.cs
- ReferenceConverter.cs
- ProgressPage.cs
- SizeAnimation.cs
- ObjectQuery.cs
- SqlXmlStorage.cs
- DesignerImageAdapter.cs
- SqlProcedureAttribute.cs
- BreakRecordTable.cs
- AppDomainProtocolHandler.cs
- XmlDomTextWriter.cs
- DbException.cs
- SingleObjectCollection.cs
- LinkUtilities.cs
- HuffCodec.cs
- AuthStoreRoleProvider.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- XmlSchemaInclude.cs
- PointAnimationClockResource.cs
- DescendentsWalker.cs
- ConfigurationStrings.cs
- ManagedWndProcTracker.cs
- EventLogReader.cs
- AcceleratedTokenProviderState.cs
- RepeaterDesigner.cs
- DataGridViewCheckBoxCell.cs
- PropertyKey.cs
- XmlSchemaGroupRef.cs
- Lasso.cs
- FtpCachePolicyElement.cs
- Soap12ProtocolImporter.cs
- DataGridViewRowEventArgs.cs
- FixedTextBuilder.cs
- XmlWriterTraceListener.cs
- SqlConnection.cs
- HtmlPhoneCallAdapter.cs
- OdbcParameterCollection.cs
- UrlMappingCollection.cs
- TreeViewItem.cs
- PolicyFactory.cs
- OdbcReferenceCollection.cs
- TemplateControlParser.cs
- DriveNotFoundException.cs
- ProfileModule.cs
- ReferentialConstraintRoleElement.cs
- CacheMode.cs
- OleDbError.cs
- CodeTypeOfExpression.cs
- DependencySource.cs
- StateBag.cs
- Cursors.cs
- MeasurementDCInfo.cs
- HostedAspNetEnvironment.cs
- ConstraintManager.cs