in src/DotPulsar/Internal/PingPongHandler.cs [56:82]
private async void Watch()
{
var waitFor = _keepAliveInterval;
while (!_cts.IsCancellationRequested)
{
await Task.Delay(waitFor).ConfigureAwait(false);
var elapsed = GetElapsedTimeSinceLastCommand();
if (elapsed > _keepAliveInterval)
{
if (_waitForPong)
{
_stateManager.SetState(PingPongHandlerState.TimedOut);
return;
}
_waitForPong = true;
_stateManager.SetState(PingPongHandlerState.ThresholdExceeded);
waitFor = _keepAliveInterval;
}
else
{
_stateManager.SetState(PingPongHandlerState.Active);
waitFor = _keepAliveInterval.Subtract(elapsed);
}
}
}