예제 #1
0
        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;
            }
        }