private ClusterHeartbeatSenderState MembershipChange(HeartbeatNodeRing newRing)
{
var oldReceivers = Ring.MyReceivers.Value;
var removedReceivers = oldReceivers.Except(newRing.MyReceivers.Value);
var newUnreachable = Unreachable;
foreach (var r in removedReceivers)
{
if (FailureDetector.IsAvailable(r.Address))
FailureDetector.Remove(r.Address);
else
{
newUnreachable = newUnreachable.Add(r);
}
}
return Copy(newRing, newUnreachable);
}