コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }