コード例 #1
0
        public Message SendServerCommand(Server.CommandName cmd, List <Object> cmdParams)
        {
            var command = new Message();

            command.Type    = MessageType.COMMAND;
            command.SubType = (int)cmd;
            command.Target  = ServerID;

            //now add in extra params
            switch (cmd)
            {
            case Server.CommandName.SET_TRACE_LEVEL:
                if (cmdParams.Count < 2)
                {
                    throw new Exception("Please supply a listener name and trace level");
                }

                command.AddValue("Listener", cmdParams[0].ToString());
                command.AddValue("TraceLevel", (int)cmdParams[1]);
                break;

            case Server.CommandName.RESTORE_TRACE_LEVEL:
                if (cmdParams.Count < 1)
                {
                    throw new Exception("Please supply a listener name");
                }

                command.AddValue("Listener", cmdParams[0].ToString());
                break;

            case Server.CommandName.ECHO_TRACE_TO_CLIENT:
                if (cmdParams.Count < 1)
                {
                    throw new Exception("Please supply something to echo");
                }

                command.Value = (String)cmdParams[0];
                break;

            case Server.CommandName.CLOSE_CONNECTION:
                if (cmdParams.Count < 1)
                {
                    throw new Exception("Please supply connection ID");
                }
                command.AddValue("ConnectionID", cmdParams[0].ToString());
                break;
            }

            SendMessage(command);

            return(command);
        }
コード例 #2
0
        public Message Unsubscribe(String clients)
        {
            var msg = new Message();

            msg.Type  = MessageType.UNSUBSCRIBE;
            msg.Value = "Unsubscibe request from " + Name;
            msg.AddValue("Clients", clients);
            SendMessage(msg);

            if (_subscriptionFilters.Count > 0)
            {
                List <MessageFilter> toRemove = new List <MessageFilter>();
                var parts = clients.Split(',');
                foreach (var client in parts)
                {
                    foreach (MessageFilter f in _subscriptionFilters)
                    {
                        if (f.Sender.Equals(client.Trim()))
                        {
                            HandleMessage -= f.HandleMessage;
                            toRemove.Add(f);
                        }
                    }
                }
                foreach (MessageFilter r in toRemove)
                {
                    _subscriptionFilters.Remove(r);
                }
            }

            return(msg);
        }
コード例 #3
0
        public Message SendCommand(String target, String command, List <Object> args = null)
        {
            var msg = new Message();

            msg.Type  = MessageType.COMMAND;
            msg.Value = command;
            //sanitise args
            List <Object> args2send = null;

            if (args != null)
            {
                args2send = new List <Object>();
                foreach (var arg in args)
                {
                    if (arg == null || arg.ToString() == String.Empty)
                    {
                        continue;
                    }
                    if (arg is String && arg != null)
                    {
                        args2send.Add(((String)arg).Trim());
                    }
                    else
                    {
                        args2send.Add(arg);
                    }
                }
            }

            msg.AddValue("Arguments", args2send);
            SendMessage(target, msg);

            return(msg);
        }
コード例 #4
0
        public Message Subscribe(String clients)
        {
            var msg = new Message();

            msg.Type  = MessageType.SUBSCRIBE;
            msg.Value = "Subscription request from " + Name;
            msg.AddValue("Clients", clients);
            SendMessage(msg);

            return(msg);
        }
コード例 #5
0
        public Message RequestServerConnectionStatus(String cnnId = null)
        {
            if (!IsConnected)
            {
                throw new Exception("Connection::RequestStatus: cannot request because not connected");
            }

            var request = new Message();

            request.Type = MessageType.STATUS_REQUEST;
            request.AddValue("ConnectionID", cnnId == null ? Name : cnnId);
            SendMessage(request);

            return(request);
        }