private void InternalUpdateStatistics(long messageNumber, long elapsedMilliseconds, long size, bool chartEnabled)
{
lock (this)
{
var elapsedSeconds = (double)elapsedMilliseconds / 1000;
if (elapsedSeconds > receiverMaximumTime)
{
receiverMaximumTime = elapsedSeconds;
}
if (elapsedSeconds < receiverMinimumTime)
{
receiverMinimumTime = elapsedSeconds;
}
receiverTotalTime += elapsedSeconds;
receiverMessageSizeTotal += size;
receiverMessageNumber += messageNumber;
receiverAverageTime = receiverMessageNumber > 0 ? receiverTotalTime / receiverMessageNumber : 0;
receiverMessagesPerSecond = receiverTotalTime > 0 ? receiverMessageNumber / receiverTotalTime : 0;
receiverMessageSizePerSecond = receiverTotalTime > 0 ? receiverMessageSizeTotal / (receiverTotalTime * 1024) : 0;
txtMessagesPerSecond.Text = string.Format(LabelFormat, receiverMessagesPerSecond);
txtMessagesPerSecond.Refresh();
txtMessagesTotal.Text = receiverMessageNumber.ToString(CultureInfo.InvariantCulture);
txtMessagesTotal.Refresh();
txtAverageDuration.Text = string.Format(LabelFormat, receiverAverageTime);
txtAverageDuration.Refresh();
txtMessageSizePerSecond.Text = string.Format(LabelFormat, receiverMessageSizePerSecond);
txtAverageDuration.Refresh();
if (!chartEnabled)
{
return;
}
chart.Series["ReceiverLatency"].Points.AddXY(receiverMessageNumber, elapsedSeconds * averageTimeScale);
chart.Series["ReceiverThroughput"].Points.AddXY(receiverMessageNumber, receiverMessagesPerSecond * eventDataPerSecondScale);
chart.Series["MessageSizePerSecond"].Points.AddXY(receiverMessageNumber, receiverMessageSizePerSecond * messageSizePerSecondScale);
}
}