private bool RendezvousNotLeader(IMessage message) { var shouldHandle = IsRendezvousNotLeader(message); if (shouldHandle) { var payload = message.GetPayload <RendezvousNotLeaderMessage>(); var newLeader = new RendezvousEndpoint(payload.NewLeader.UnicastUri, payload.NewLeader.BroadcastUri); var currentLeader = rendezvousCluster.GetCurrentRendezvousServer(); if (!currentLeader.Equals(newLeader)) { logger.Info($"New Rendezvous leader: {newLeader.BroadcastUri.AbsoluteUri}. " + $"Disconnecting {currentLeader.BroadcastUri.AbsoluteUri}"); if (!rendezvousCluster.SetCurrentRendezvousServer(newLeader)) { logger.Error($"New Rendezvous leader {newLeader.BroadcastUri.AbsoluteUri} " + $"was not found within configured Rendezvous cluster: [{string.Join(",", rendezvousCluster.Nodes.Select(n => n.BroadcastUri.AbsoluteUri))}]"); } newRendezvousConfiguration.Set(); } } return(shouldHandle); }
private bool RendezvousNotLeader(IMessage message) { var shouldHandle = IsRendezvousNotLeader(message); if (shouldHandle) { var payload = message.GetPayload <RendezvousNotLeaderMessage>(); var newLeader = new RendezvousEndpoint(new Uri(payload.NewLeader.UnicastUri), new Uri(payload.NewLeader.BroadcastUri)); var currentLeader = rendezvousCluster.GetCurrentRendezvousServer(); if (!currentLeader.Equals(newLeader)) { logger.Info($"New Rendezvous leader: {newLeader.BroadcastUri.AbsoluteUri}. " + $"Disconnecting {currentLeader.BroadcastUri.AbsoluteUri}"); rendezvousCluster.SetCurrentRendezvousServer(newLeader); newRendezvousConfiguration.Set(); } } return(shouldHandle); }