/// <summary> /// Конструктор для создания пустой подкатегории WinEmptyCategory. /// </summary> /// <param name="name">Название категории</param> /// <param name="description">Описание категории</param> /// <param name="rootName">Корневое имя</param> /// <param name="info">Информация по функционированию</param> internal WinEmptyCategory(string name, string description, string rootName, WinCountersWorkingInfo info) : base(name, description) { if (info == null) { throw new ArgumentNullException("info"); } if (string.IsNullOrEmpty(rootName)) { FullName = name; } else if (string.IsNullOrEmpty(name)) { FullName = rootName; } else { FullName = rootName + "." + name; } _info = info; _state = WinCategoryState.Created; _childCategories = new List <Category>(); }
/// <summary> /// Конструктор WinNumberOfItemsCounter /// </summary> /// <param name="name">Имя счётчика</param> /// <param name="description">Описание счётчика</param> /// <param name="info">Информация о функционировании</param> internal WinDeltaCounter(string name, string description, WinCountersWorkingInfo info) : base(name, description) { _state = WinCounterState.Created; _info = info; _lastMeasuredValue = 0; }
/// <summary> /// Конструктор WinSingleInstanceCategory /// </summary> /// <param name="name">Имя категории</param> /// <param name="description">Описание категории</param> /// <param name="rootName">Корневое имя</param> /// <param name="info">Информация о функционировании</param> internal WinSingleInstanceCategory(string name, string description, string rootName, WinCountersWorkingInfo info) : base(name, description) { if (info == null) { throw new ArgumentNullException("info"); } FullName = string.IsNullOrEmpty(rootName) ? name : rootName + "." + name; _info = info; _state = WinCategoryState.Created; _childCategories = new List <Category>(); }
/// <summary> /// Конструктор WinCounterFactory /// </summary> /// <param name="instMode">Режим работы</param> /// <param name="namePrefix">Префикс имени категории</param> /// <param name="machineName">Имя машины (null или '.' для локальной)</param> /// <param name="readOnlyCounters">Счётчики только для чтения</param> /// <param name="preferedBitness">Предпочитать ли 64 битные счётчики</param> /// <param name="existedInstancesTreatment">Как обрабатывать существующие в Windows инстансы</param> public WinCounterFactory(WinCountersInstantiationMode instMode, string namePrefix, string machineName, bool readOnlyCounters, WinCountersPreferedBitness preferedBitness, WinCountersExistedInstancesTreatment existedInstancesTreatment) { bool prefer64BitCounters = Environment.Is64BitOperatingSystem; if (preferedBitness == WinCountersPreferedBitness.Prefer32BitCounters) { prefer64BitCounters = false; } else if (preferedBitness == WinCountersPreferedBitness.Prefer64BitCounters) { prefer64BitCounters = true; } _info = new WinCountersWorkingInfo(instMode, machineName, readOnlyCounters, prefer64BitCounters, existedInstancesTreatment); _namePrefix = namePrefix != null?namePrefix.TrimEnd('.') : ""; _state = WinCategoryState.Created; _childCategories = new List <Category>(); }
/// <summary> /// Конструктор WinCounterDescriptor /// </summary> /// <param name="name">Имя счётчика</param> /// <param name="description">Описание счётчика</param> /// <param name="type">Тип счётчика</param> /// <param name="info">Информация о функционировании</param> protected WinCounterDescriptor(string name, string description, CounterTypes type, WinCountersWorkingInfo info) { if (name == null) { throw new ArgumentNullException("name"); } if (description == null) { throw new ArgumentNullException("description"); } if (info == null) { throw new ArgumentNullException("info"); } Name = name; Description = description; Type = type; Info = info; }
/// <summary> /// Конструктор RecreateWinMultiInstanceCategory /// </summary> /// <param name="name">Имя категории</param> /// <param name="description">Описание категории</param> /// <param name="rootName">Корневое имя</param> /// <param name="info">Информация о функционировании</param> internal RecreateWinMultiInstanceCategory(string name, string description, string rootName, WinCountersWorkingInfo info) : base(name, description, rootName, info) { if (info.InstantiationMode != WinCountersInstantiationMode.AlwaysCreateNew && info.InstantiationMode != WinCountersInstantiationMode.UseExistedIfPossible) { throw new InvalidOperationException("Category RecreateWinMultiInstanceCategory can't be used with instantiation mode: " + info.InstantiationMode.ToString()); } _instances = new ConcurrentDictionary <string, WinInstanceInMultiInstanceCategory>(); _counters = new ConcurrentDictionary <string, WinCounterDescriptor>(); }
/// <summary> /// Конструктор WinOperationsPerSecondCounter /// </summary> /// <param name="name">Имя счётчика</param> /// <param name="description">Описание счётчика</param> /// <param name="info">Информация о функционировании</param> internal WinOperationsPerSecondCounter(string name, string description, WinCountersWorkingInfo info) : base(name, description) { _state = WinCounterState.Created; _info = info; }
/// <summary> /// Создание дескриптора для счётчика WinOperationsPerSecondCounter /// </summary> /// <param name="name">Имя счётчика</param> /// <param name="description">Описание счётчика</param> /// <param name="info">Информация о функционировании</param> /// <returns>Созданный дескриптор</returns> internal static WinCounterDescriptor CreateDescriptor(string name, string description, WinCountersWorkingInfo info) { return(new Descriptor(name, description, info)); }
/// <summary> /// Конструктор Descriptor /// </summary> /// <param name="name">Имя счётчика</param> /// <param name="description">Описание счётчика</param> /// <param name="info">Информация о функционировании</param> public Descriptor(string name, string description, WinCountersWorkingInfo info) : base(name, description, CounterTypes.OperationsPerSecond, info) { }
/// <summary> /// Конструктор WinElapsedTimeCounter /// </summary> /// <param name="name">Имя счётчика</param> /// <param name="description">Описание счётчика</param> /// <param name="info">Информация о функционировании</param> internal WinElapsedTimeCounter(string name, string description, WinCountersWorkingInfo info) : base(name, description) { _state = WinCounterState.Created; _info = info; }
/// <summary> /// Конструктор Descriptor /// </summary> /// <param name="name">Имя счётчика</param> /// <param name="description">Описание счётчика</param> /// <param name="info">Информация о функционировании</param> public Descriptor(string name, string description, WinCountersWorkingInfo info) : base(name, description, CounterTypes.ElapsedTime, info) { }
/// <summary> /// Конструктор WinNumberOfItemsCounter /// </summary> /// <param name="name">Имя счётчика</param> /// <param name="description">Описание счётчика</param> /// <param name="info">Информация о функционировании</param> internal WinNumberOfItemsCounter(string name, string description, WinCountersWorkingInfo info) : base(name, description) { _state = WinCounterState.Created; _info = info; }
/// <summary> /// Конструктор Descriptor /// </summary> /// <param name="name">Имя счётчика</param> /// <param name="description">Описание счётчика</param> /// <param name="info">Информация о функционировании</param> public Descriptor(string name, string description, WinCountersWorkingInfo info) : base(name, description, CounterTypes.NumberOfItems, info) { }
/// <summary> /// Конструктор UseOnlyExistedWinSingleInstanceCategory /// </summary> /// <param name="name">Имя категории</param> /// <param name="description">Описание категории</param> /// <param name="rootName">Корневое имя</param> /// <param name="info">Информация о функционировании</param> internal UseOnlyExistedWinSingleInstanceCategory(string name, string description, string rootName, WinCountersWorkingInfo info) : base(name, description, rootName, info) { if (info.InstantiationMode != WinCountersInstantiationMode.UseOnlyExisted) { throw new InvalidOperationException("Category UseOnlyExistedWinSingleInstanceCategory can't be used with instantiation mode: " + info.InstantiationMode.ToString()); } if (!HasWinCategory()) { throw new CategoryCreationException(string.Format("Can't create category ({0}) cause it is not registerd in Windows (UseOnlyExisted mode)", this.ToString())); } _counters = new ConcurrentDictionary <string, Counter>(); _winCategory = GetExistedWinCategory(); if (_winCategory.CategoryType != PerformanceCounterCategoryType.SingleInstance) { throw new CategoryCreationException(string.Format("Can't create category ({0}) cause it's type is not equal to Windows category type ({1}) (UseOnlyExisted mode)", this.ToString(), _winCategory.CategoryType)); } var existedCntr = _winCategory.GetCounters(); foreach (var cnt in existedCntr) { var newCounter = CounterHelper.CreateByExistedCounterAndInit(cnt, Info); if (newCounter != null) { _counters.TryAdd(newCounter.Name, newCounter); } cnt.Dispose(); } this.Init(); }
/// <summary> /// Конструктор Descriptor /// </summary> /// <param name="name">Имя счётчика</param> /// <param name="description">Описание счётчика</param> /// <param name="info">Информация о функционировании</param> public Descriptor(string name, string description, WinCountersWorkingInfo info) : base(name, description, CounterTypes.AverageCount, info) { }