public override void WriteMessageBegin(TMessage message)
        {
            WriteJSONArrayStart();
            WriteJSONInteger(VERSION);

            byte[] b = utf8Encoding.GetBytes(message.Name);
            WriteJSONString(b);

            WriteJSONInteger((long)message.Type);
            WriteString(message.MsgID);

            WriteI16(message.LiveLife);
            WriteString(message.Sender);
            WriteString(message.SenderQueueName);
            WriteString(message.Receiver);
            WriteString(message.ReceiverQueueName);
        }
        public override TMessage ReadMessageBegin()
        {
            //初始化消息对象
            TMessage message = new TMessage();
            //读取第一部分 version strictRead_ == TRUE   整个读取的过程和写入时相反
            int size = ReadI32();

            if (size < 0)
            {
                uint version = (uint)size & VERSION_MASK;
                if (version != VERSION_1)
                {
                    throw new TSerializerException(TSerializerException.BAD_VERSION, "Bad version in ReadMessageBegin: " + version);
                }
                message.Type = (TMessageType)(size & 0x000000ff);
                //读取消息的名称
                message.Name = ReadString();
                //读取消息的msgID
                message.MsgID = ReadString();
            }
            else
            {
                if (strictRead_)
                {
                    throw new TSerializerException(TSerializerException.BAD_VERSION, "Missing version in readMessageBegin, old client?");
                }
                message.Name  = ReadStringBody(size);
                message.Type  = (TMessageType)ReadByte();
                message.MsgID = ReadString();
            }
            //读取超时时间
            message.LiveLife = ReadI16();
            //读取发送者
            message.Sender = ReadString();
            //读取发送队列名称
            message.SenderQueueName = ReadString();
            //读取接受者
            message.Receiver = ReadString();
            //读取接收者队列名称
            message.ReceiverQueueName = ReadString();

            return(message);
        }
 public override void WriteMessageBegin(TMessage message)
 {
     if (strictWrite_)
     {
         uint version = VERSION_1 | (uint)(message.Type);
         WriteI32((int)version);
         WriteString(message.Name);
         WriteString(message.MsgID);
     }
     else
     {
         WriteString(message.Name);
         WriteByte((byte)message.Type);
         WriteString(message.MsgID);
     }
     WriteI16(message.LiveLife);
     WriteString(message.Sender);
     WriteString(message.SenderQueueName);
     WriteString(message.Receiver);
     WriteString(message.ReceiverQueueName);
 }
        public override TMessage ReadMessageBegin()
        {
            TMessage message = new TMessage();

            ReadJSONArrayStart();
            if (ReadJSONInteger() != VERSION)
            {
                throw new TSerializerException(TSerializerException.BAD_VERSION,
                                               "Message contained bad version.");
            }

            message.Name  = utf8Encoding.GetString(ReadJSONString(false));
            message.Type  = (TMessageType)ReadJSONInteger();
            message.MsgID = ReadString();

            message.LiveLife          = ReadI16();
            message.Sender            = ReadString();
            message.SenderQueueName   = ReadString();
            message.Receiver          = ReadString();
            message.ReceiverQueueName = ReadString();


            return(message);
        }
Esempio n. 5
0
 public abstract void WriteMessageBegin(TMessage message);