示例#1
0
 public void Deserialize(AMessage message, BytesBuffer bb)
 {
     foreach (var deserializer in deserializers)
     {
         deserializer(message, bb);
     }
 }
示例#2
0
 public void Serialize(AMessage message, BytesBuffer bb)
 {
     foreach (var serializer in serializers)
     {
         serializer(message, bb);
     }
 }
示例#3
0
        public byte[] ToBytes()
        {
            BytesBuffer bb = new BytesBuffer(128);

            messageType.Serialize(this, bb);
            return(bb.ToByteArray());
        }
示例#4
0
        public static AMessage Create(byte id, BytesBuffer bb)
        {
            AMessage    result      = null;
            MessageType messageType = messageTypes[id];

            if (messageType != null)
            {
                result = (AMessage)Activator.CreateInstance(messageType.MessageClassType);
                messageType.Deserialize(result, bb);
            }
            return(result);
        }
示例#5
0
        public MessageWriteState(Stream stream, AMessage message, AsyncResult asyncResult)
        {
            this.stream      = stream;
            this.message     = message;
            this.asyncResult = asyncResult;

            byte[] data       = message.ToBytes();
            int    headerSize = 1 + sizeof(int);

            buffer = new byte[headerSize + data.Length];
            // Populate the header
            buffer[0] = message.Id;
            BytesBuffer.ToBytes(data.Length, sizeof(int), buffer, 1);
            // Populate the data
            Array.Copy(data, 0, buffer, headerSize, data.Length);
        }
示例#6
0
 public int GetDataLength()
 {
     return((int)BytesBuffer.FromBytes(4, header, 1));
 }
示例#7
0
 public void Serialize(BytesBuffer bb)
 {
     messageType.Serialize(this, bb);
 }