public void ReceiveServerAction(PropagateToken token) { if (checkDiscovery(token)) { return; } logger.Debug("Token {0} received for action {1}", token.GetUID(), token.Action.ToString()); if (token.HasHopedOnObject(this)) { logger.Debug("Token {0} already processed, discarding", token.GetUID()); return; } object[] pars; switch (token.Action) { case PropagateAction.AddServer: AddZoneServer((IServerExtended)token.Data, token); break; case PropagateAction.RemoveServer: RemoveZoneServer((string)token.Data, token); break; case PropagateAction.Register: pars = (object[])token.Data; Register((string[])pars[0], (IStockManager)pars[1], token); break; case PropagateAction.Unregister: Unregister((IStockManager)token.Data, token); break; } }
private bool checkDiscovery(PropagateToken token) { if (discoveryComplete) { return(false); } lock (knownServers) { if (!discoveryComplete && (discoverToken.GetUID() == token.GetUID())) { discoveryComplete = true; logger.Info("Received discovery token. Server is on the ring."); return(true); } } return(false); }