public static IEnumerable <CounterData> GetResults() { var counterGroups = _counterLookupInstance.Values.SelectMany(lookup => lookup.Values).GroupBy(meas => meas.Name); foreach (var counterGroup in counterGroups) { CounterData counter = new CounterData(counterGroup.Key); counter.Value = counterGroup.Sum(meas => meas.Value); counter.First = counterGroup.Min(meas => meas.First); counter.Last = counterGroup.Max(meas => meas.Last); yield return(counter); } }
/// <summary> /// Increment the counter for the given name. /// </summary> public static void IncrementBy(string name, long value) { Dictionary <string, CounterData> lookup = _counterLookupInstance.Value; CounterData counter; if (!lookup.TryGetValue(name, out counter)) { counter = new CounterData(name); lookup.Add(name, counter); } DateTime now = DateTime.Now; if (counter.First == DateTime.MinValue) { counter.First = now; } counter.Last = now; counter.Value = counter.Value + value; }