Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="requestObject"></param>
        private void DispatchRequest(IMPObject requestObject)
        {
            IMessage message = new Message();

            if (requestObject.IsNull(CONTROLLER_ID))
            {
                throw new Exception("Request rejected: No Controller ID in request!");
            }
            if (requestObject.IsNull(ACTION_ID))
            {
                throw new Exception("Request rejected: No Action ID in request!");
            }
            message.Id      = Convert.ToInt32(requestObject.GetShort(ACTION_ID));
            message.Content = requestObject.GetMPObject(PARAM_ID);
            message.IsUDP   = requestObject.ContainsKey(UDP_PACKET_ID);
            if (message.IsUDP)
            {
                message.PacketId = requestObject.GetLong(UDP_PACKET_ID);
            }
            int         @byte      = requestObject.GetByte(CONTROLLER_ID);
            IController controller = this.bitSwarm.GetController(@byte);

            if (controller == null)
            {
                throw new Exception("Cannot handle server response. Unknown controller, id: " + @byte);
            }
            controller.HandleMessage(message);
        }
Пример #2
0
        public override void HandleMessage(IMessage message)
        {
            if (mpnet.Debug)
            {
                log.Info(message.ToString());
            }
            IMPObject content = message.Content;
            //Hashtable data = new Hashtable();
            //data["cmd"] = content.GetUtfString(KEY_CMD);
            //data["params"] = content.GetMPObject(KEY_PARAMS);
            //if (message.IsUDP)
            //{
            //data["packetId"] = message.PacketId;
            //}
            //MPEvent evt = new MPEvent(MPEvent.EXTENSION_RESPONSE, data);
            string    cmd        = content.GetUtfString(KEY_CMD);
            IMPObject parameters = content.GetMPObject(KEY_PARAMS);

            if (message.IsUDP)
            {
                parameters.PutLong("packetId", message.PacketId);
            }
            mpnet.HandleExtension(cmd, parameters);
            //mpnet.DispatchEvent(new MPEvent(MPEvent.EXTENSION_RESPONSE, data));
        }
Пример #3
0
        private void FnLogin(IMessage msg)
        {
            IMPObject content = msg.Content;
            Hashtable data    = new Hashtable();

            if (content.IsNull(BaseRequest.KEY_ERROR_CODE))
            {
                mpnet.MySelf             = new MPUser(content.GetInt(LoginRequest.KEY_ID), content.GetUtfString(LoginRequest.KEY_USER_NAME));
                mpnet.MySelf.PrivilegeId = content.GetShort(LoginRequest.KEY_PRIVILEGE_ID);
                mpnet.SetReconnectionSeconds(content.GetShort(LoginRequest.KEY_RECONNECTION_SECONDS));
                mpnet.MySelf.PrivilegeId = content.GetShort(LoginRequest.KEY_PRIVILEGE_ID);
                data["user"]             = mpnet.MySelf;
                data["data"]             = content.GetMPObject(LoginRequest.KEY_PARAMS);
                MPEvent evt = new MPEvent(MPEvent.LOGIN, data);
                mpnet.DispatchEvent(evt);
            }
            else
            {
                short code = content.GetShort(BaseRequest.KEY_ERROR_CODE);
                data["errorCode"] = code;
                mpnet.DispatchEvent(new MPEvent(MPEvent.LOGIN_ERROR, data));
            }
        }