Beispiel #1
0
        public void HandleItem(IRingBufferItem ringBufferItem)
        {
            counter++;
            duration = (dateService.UtcNow() - ringBufferItem.FirstTouchTime).TotalMilliseconds;

            if (!FirstMessageTimeIsSet)
            {
                FirstMessageTime      = ringBufferItem.FirstTouchTime;
                FirstMessageTimeIsSet = true;
            }

            if (duration < minMeasuredDuration)
            {
                minMeasuredDuration = duration;
            }

            if (duration > maxMeasuredDuration)
            {
                maxMeasuredDuration = duration;
            }

            // Calculate running average (erighted average)
            runningBaseAverage = ((runningBaseAverage * (counter - 1)) + duration) / counter;
            LastMessageTime    = ringBufferItem.FirstTouchTime;
        }
Beispiel #2
0
        public override void OnNext(IRingBufferItem data, long sequence, bool endOfBatch)
        {
            Counter++;
            Aggregator.HandleItem(data);

            if (Counter >= MessageCountInterval)
            {
                FlushMetricsToSinks();
                Counter = 0;
            }
        }
        public override void OnNext(IRingBufferItem data, long sequence, bool endOfBatch)
        {
            if (IntervalFirstDate == DateTimeOffset.MinValue)
            {
                IntervalFirstDate = data.FirstTouchTime;
            }
            else
            {
                if ((data.FirstTouchTime - IntervalFirstDate).TotalSeconds >= SecondInterval)
                {
                    Flush();
                }
            }

            Aggregator.HandleItem(data);
        }
 public abstract void OnNext(IRingBufferItem data, long sequence, bool endOfBatch);