private IAuditCounter CreateCounter(string arg) { var counter = new AuditCounterImpl(); var dataSetCircularBuffer = new DataPointCircularBuffer <int>(kLogLength); dataSetCircularBuffersByName.AddOrThrow(arg, dataSetCircularBuffer); updaterActions.TryAdd(() => { dataSetCircularBuffer.Put(counter.GetAndReset()); }); return(counter); }
public DataPointCircularBuffer <T> CreatePeriodicDataSet <T>(string name, Func <T> getValue) { var buffer = new DataPointCircularBuffer <T>(kLogLength); dataSetCircularBuffersByName.AddOrThrow(name, buffer); updaterActions.TryAdd(() => { buffer.Put(getValue()); }); return(buffer); }
private object CreateAggregator <T>(string name) { var aggregator = new DefaultAuditAggregator <T>(); var dataSetCircularBuffer = new DataPointCircularBuffer <AggregateStatistics <T> >(kLogLength); dataSetCircularBuffersByName.AddOrThrow(name, dataSetCircularBuffer); updaterActions.TryAdd(() => { var statistics = aggregator.GetAndReset(); if (statistics != null) { dataSetCircularBuffer.Put(statistics); } }); return(aggregator); }