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; } }