private void TimePeriodPassed(int difference)
{
var currSpeed = (int) (_tempRecvCount*1000/difference);
_tempRecvCount = 0;
int speedsCount;
if (_speedsIndex < 0)
{
//speeds array hasn't been filled yet
var idx = _speeds.Length + _speedsIndex;
_speeds[idx] = currSpeed;
speedsCount = idx + 1;
_speedsIndex++;
}
else
{
//speeds array is full, keep wrapping around overwriting the oldest value
_speeds[_speedsIndex] = currSpeed;
speedsCount = _speeds.Length;
_speedsIndex = (_speedsIndex + 1)%_speeds.Length;
}
var total = _speeds[0];
for (var i = 1; i < speedsCount; i++)
total += _speeds[i];
Rate = total/speedsCount;
}