Example #1
0
        /// <summary>
        /// Creates a network message by decoding a NetMessage
        /// </summary>
        /// <param name="msg">The NetMessage to be decoded</param>
        public SpiderMessage(NetMessage msg)
        {
            //This is the exception we throw if something goes wrong
            Exception e = new Exception("Could not read message");

            byte[] contents = msg.ReadBytes(msg.Length);
            type = (SpiderMessageType)contents[0];
            int dataOffset = BitConverter.ToInt32(contents, 1);
            label = Encoding.UTF8.GetString(contents, 1 + sizeof(int), dataOffset - 1 - sizeof(int));

            senderIP = msg.Sender.RemoteEndpoint.Address;
            connection = msg.Sender;

            if (type == SpiderMessageType.Bytes) {
                data = new byte[contents.Length - dataOffset];
                for (int i = 0; i < contents.Length - dataOffset; i++) {
                    ((byte[])data)[i] = contents[i + dataOffset];
                }
            }
            else {
                String tempData = Encoding.UTF8.GetString(contents, dataOffset, contents.Length - dataOffset);
                switch (type) {
                    case SpiderMessageType.Double:
                        data = Convert.ToDouble(tempData);
                        break;
                    case SpiderMessageType.Int:
                        data = Convert.ToInt32(tempData);
                        break;
                    default:
                        data = tempData;
                        break;
                }
            }
        }
Example #2
0
        /// <summary>
        /// Creates a network message by decoding a NetMessage
        /// </summary>
        /// <param name="msg">The NetMessage to be decoded</param>
        public SpiderMessage(NetMessage msg)
        {
            //This is the exception we throw if something goes wrong
            Exception e = new Exception("Could not read message");

            byte[] contents = msg.ReadBytes(msg.Length);
            type = (SpiderMessageType)contents[0];
            int dataOffset = BitConverter.ToInt32(contents, 1);

            label = Encoding.UTF8.GetString(contents, 1 + sizeof(int), dataOffset - 1 - sizeof(int));

            senderIP   = msg.Sender.RemoteEndpoint.Address;
            connection = msg.Sender;

            if (type == SpiderMessageType.Bytes)
            {
                data = new byte[contents.Length - dataOffset];
                for (int i = 0; i < contents.Length - dataOffset; i++)
                {
                    ((byte[])data)[i] = contents[i + dataOffset];
                }
            }
            else
            {
                String tempData = Encoding.UTF8.GetString(contents, dataOffset, contents.Length - dataOffset);
                switch (type)
                {
                case SpiderMessageType.Double:
                    data = Convert.ToDouble(tempData);
                    break;

                case SpiderMessageType.Int:
                    data = Convert.ToInt32(tempData);
                    break;

                default:
                    data = tempData;
                    break;
                }
            }
        }
Example #3
0
 /// <summary>
 /// Creates a new network message.  Do not use pipes ('|') in any of the parameters.
 /// </summary>
 /// <param name="msgContents">The data to be stored in the message.  Must have type msgType.</param>
 /// <param name="msgType">The type of msgContents</param>
 /// <param name="msgLabel">The label for this message</param>
 public SpiderMessage(object msgContents, SpiderMessageType msgType, String msgLabel)
 {
     data  = msgContents;
     type  = msgType;
     label = msgLabel;
 }
Example #4
0
 /// <summary>
 /// Creates a new network message.  Do not use pipes ('|') in any of the parameters.
 /// </summary>
 /// <param name="msgContents">The data to be stored in the message.  Must have type msgType.</param>
 /// <param name="msgType">The type of msgContents</param>
 /// <param name="msgLabel">The label for this message</param>
 public SpiderMessage(object msgContents, SpiderMessageType msgType, String msgLabel)
 {
     data = msgContents;
     type = msgType;
     label = msgLabel;
 }