Microsoft.Azure.WebJobs.Script.WebHost.Diagnostics.MetricsEventManager.EndEvent C# (CSharp) Method

EndEvent() public method

public EndEvent ( object eventHandle ) : void
eventHandle object
return void
        public void EndEvent(object eventHandle)
        {
            if (eventHandle == null)
            {
                throw new ArgumentNullException(nameof(eventHandle));
            }

            SystemMetricEvent evt = eventHandle as SystemMetricEvent;
            if (evt != null)
            {
                evt.Duration = DateTime.UtcNow - evt.Timestamp;
                long latencyMS = (long)evt.Duration.TotalMilliseconds;

                QueuedEvents.AddOrUpdate(evt.EventName,
                    (name) =>
                    {
                        // create the default event that will be added
                        // if an event isn't already queued for this event name
                        return new SystemMetricEvent
                        {
                            EventName = evt.EventName,
                            Minimum = latencyMS,
                            Maximum = latencyMS,
                            Average = latencyMS,
                            Count = 1
                        };
                    },
                    (name, evtToUpdate) =>
                    {
                        // Aggregate into the existing event
                        // While we'll be performing an aggregation later,
                        // we retain the count so weighted averages can be performed
                        evtToUpdate.Maximum = Math.Max(evtToUpdate.Maximum, latencyMS);
                        evtToUpdate.Minimum = Math.Min(evtToUpdate.Minimum, latencyMS);
                        evtToUpdate.Average += latencyMS;  // the average is calculated later - for now we sum
                        evtToUpdate.Count++;

                        return evtToUpdate;
                    });
            }
        }

Usage Example

Esempio n. 1
0
 public void EndEvent(object eventHandle)
 {
     _metricsEventManager.EndEvent(eventHandle);
 }