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; }
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);