Example #1
0
        /// <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>();
        }
Example #2
0
 /// <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;
 }
Example #3
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>();
        }
Example #5
0
        /// <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)
 {
 }
Example #14
0
        /// <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)
 {
 }