protected override void OnReceive(object message)
{
var state = message as ClusterEvent.CurrentClusterState;
if (state != null)
{
_clusterNodes =
state.Members.Select(m => m.Address).Where(a => a != _cluster.SelfAddress).ToImmutableHashSet();
foreach(var node in _clusterNodes) TakeOverResponsibility(node);
Unreachable.ExceptWith(_clusterNodes);
return;
}
var memberUp = message as ClusterEvent.MemberUp;
if (memberUp != null)
{
MemberUp(memberUp);
return;
}
var memberRemoved = message as ClusterEvent.MemberRemoved;
if (memberRemoved != null)
{
MemberRemoved(memberRemoved);
return;
}
if (message is ClusterEvent.IMemberEvent) return; // not interesting
base.OnReceive(message);
}