Skip to content

Commit 63fb372

Browse files
committed
implement heartbeat detection with a single bool
1 parent 1af867a commit 63fb372

File tree

1 file changed

+8
-16
lines changed

1 file changed

+8
-16
lines changed

projects/RabbitMQ.Client/client/impl/Connection.cs

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,10 @@ internal sealed class Connection : IConnection
8383
//
8484
// Heartbeats
8585
//
86-
8786
private TimeSpan _heartbeat = TimeSpan.Zero;
8887
private TimeSpan _heartbeatTimeSpan = TimeSpan.FromSeconds(0);
8988
private int _missedHeartbeats;
90-
private int _heartbeatCounter;
91-
private int _lastHeartbeatCounter;
89+
private bool _heartbeatDetected;
9290

9391
private Timer _heartbeatWriteTimer;
9492
private Timer _heartbeatReadTimer;
@@ -616,14 +614,9 @@ public void MainLoopIteration()
616614
}
617615
}
618616

619-
public void NotifyHeartbeatListener()
617+
private void NotifyHeartbeatListener()
620618
{
621-
// https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/checked-and-unchecked
622-
// No worries if this overflows. What matters is that the value changes.
623-
unchecked
624-
{
625-
_heartbeatCounter++;
626-
}
619+
_heartbeatDetected = true;
627620
}
628621

629622
public void NotifyReceivedCloseOk()
@@ -850,17 +843,16 @@ public void HeartbeatReadTimerCallback(object state)
850843
{
851844
if (!_closed)
852845
{
853-
if (_lastHeartbeatCounter == _heartbeatCounter)
846+
if (_heartbeatDetected)
854847
{
855-
_missedHeartbeats++;
848+
_heartbeatDetected = false;
849+
_missedHeartbeats = 0;
856850
}
857851
else
858852
{
859-
_missedHeartbeats = 0;
853+
_missedHeartbeats++;
860854
}
861855

862-
_lastHeartbeatCounter = _heartbeatCounter;
863-
864856
// We check against 8 = 2 * 4 because we need to wait for at
865857
// least two complete heartbeat setting intervals before
866858
// complaining, and we've set the socket timeout to a quarter
@@ -926,7 +918,7 @@ public void HeartbeatWriteTimerCallback(object state)
926918
}
927919
}
928920

929-
void MaybeStopHeartbeatTimers()
921+
private void MaybeStopHeartbeatTimers()
930922
{
931923
NotifyHeartbeatListener();
932924
_heartbeatReadTimer?.Dispose();

0 commit comments

Comments
 (0)