Exemplo n.º 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);
        }