Beispiel #1
0
        /// <summary>
        /// Fabrica un mensaje que ha provenido de la red
        /// </summary>
        /// <param name="messageData">Los datos del mensajes como un conjunto de bytes</param>
        /// <returns>Un mensaje de alto nivel</returns>
        public Message makeMessage(byte[] messageData)
        {
            Message message = null;

            try
            {
                Int32 messageType = BitConverter.ToInt32(messageData, 4);
                if (messageType < 100)
                {
                    switch (messageType)
                    {
                    case MessageType.ACK:
                    {
                        message = new AckMessage();
                        message.byteArrayToProperties(messageData);
                        break;
                    }

                    case MessageType.IMALIVE:
                    {
                        message = new ImAliveMessage();
                        message.byteArrayToProperties(messageData);
                        break;
                    }
                    }
                }
                else
                {
                    Type classType = (Type)messageTypes[messageType];
                    message = (Message)Activator.CreateInstance(classType);
                    message.byteArrayToProperties(messageData);
                }
            }
            catch (ThreadAbortException e)
            {
                throw e;
            }
            catch (Exception e)
            {
                String s = e.Message;
            }
            return(message);
        }
 /// <summary>
 /// Fabrica un mensaje que ha provenido de la red
 /// </summary>
 /// <param name="messageData">Los datos del mensajes como un conjunto de bytes</param>
 /// <returns>Un mensaje de alto nivel</returns>
 public Message makeMessage(byte[] messageData)
 {
     Message message = null;
     try
     {
         Int32 messageType = BitConverter.ToInt32(messageData, 4);
         if (messageType < 100)
         {
             switch (messageType)
             {
                 case MessageType.ACK:
                     {
                         message = new AckMessage();
                         message.byteArrayToProperties(messageData);
                         break;
                     }
                 case MessageType.IMALIVE:
                     {
                         message = new ImAliveMessage();
                         message.byteArrayToProperties(messageData);
                         break;
                     }
             }
         }
         else
         {
             Type classType = (Type)messageTypes[messageType];
             message = (Message)Activator.CreateInstance(classType);
             message.byteArrayToProperties(messageData);
         }
     }
     catch (ThreadAbortException e)
     {
         throw e;
     }
     catch (Exception e)
     {
         String s = e.Message;
     }
     return message;
 }