/// <summary>
        /// Forwards value to metric processors.
        /// </summary>
        /// <param name="value">Value tracked on time series.</param>
        private void ForwardToProcessors(double value)
        {
            // create a local reference to metric processor collection
            // if collection changes after that - it will be copied not affecting local reference
            IList <IMetricProcessor> metricProcessors = this.manager.MetricProcessors;

            if (metricProcessors != null)
            {
                int processorCount = metricProcessors.Count;

                for (int i = 0; i < processorCount; i++)
                {
                    IMetricProcessor processor = metricProcessors[i];

                    try
                    {
                        processor.Track(this, value);
                    }
                    catch (Exception ex)
                    {
                        WindowsServerCoreEventSource.Log.FailedToRunMetricProcessor(processor.GetType().FullName, ex.ToString());
                    }
                }
            }
        }
Beispiel #2
0
 public MetricsMiddleware(RequestDelegate next, IMetricProcessor processor)
 {
     this.next       = next;
     this._processor = processor;
 }