/// <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()); } } } }
public MetricsMiddleware(RequestDelegate next, IMetricProcessor processor) { this.next = next; this._processor = processor; }