コード例 #1
0
        public EventCounterTriggerImpl(EventCounterTriggerSettings settings)
        {
            if (null == settings)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            if (settings.GreaterThan.HasValue)
            {
                double minValue = settings.GreaterThan.Value;
                if (settings.LessThan.HasValue)
                {
                    double maxValue = settings.LessThan.Value;
                    _valueFilter = value => value > minValue && value < maxValue;
                }
                else
                {
                    _valueFilter = value => value > minValue;
                }
            }
            else if (settings.LessThan.HasValue)
            {
                double maxValue = settings.LessThan.Value;
                _valueFilter = value => value < maxValue;
            }

            _intervalTicks = (long)(settings.CounterIntervalSeconds * TimeSpan.TicksPerSecond);
            _windowTicks   = settings.SlidingWindowDuration.Ticks;
        }
コード例 #2
0
        public EventCounterTrigger(EventCounterTriggerSettings settings)
        {
            if (null == settings)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            Validate(settings);

            _filter = new CounterFilter(settings.CounterIntervalSeconds);
            _filter.AddFilter(settings.ProviderName, new string[] { settings.CounterName });

            _impl = new EventCounterTriggerImpl(settings);

            _providerName = settings.ProviderName;
        }
コード例 #3
0
        private static void Validate(EventCounterTriggerSettings settings)
        {
            ValidationContext context = new(settings);

            Validator.ValidateObject(settings, context, validateAllProperties: true);
        }
コード例 #4
0
        public static MonitoringSourceConfiguration CreateConfiguration(EventCounterTriggerSettings settings)
        {
            Validate(settings);

            return(new MetricSourceConfiguration(settings.CounterIntervalSeconds, new string[] { settings.ProviderName }));
        }