private void readBatchMetas(HermesPrimitiveCodec codec, List<TppConsumerMessageBatch> batches)
        {
            int batchSize = codec.ReadInt();
            for (int i = 0; i < batchSize; i++)
            {
                TppConsumerMessageBatch batch = new TppConsumerMessageBatch();
                int msgSize = codec.ReadInt();
                batch.Topic = codec.ReadString();
                batch.Partition = codec.ReadInt();
                batch.Priority = codec.ReadInt();
                batch.Resend = codec.ReadBoolean();

                for (int j = 0; j < msgSize; j++)
                {
                    batch.AddMessageMeta(new MessageMeta(codec.ReadLong(), codec.ReadInt(), codec.ReadLong(), codec.ReadInt(),
                            codec.ReadBoolean()));
                }
                batches.Add(batch);
            }
        }
        private ConcurrentDictionary<Triple<Tpp, string, bool>, List<AckContext>> readMsgSeqMap(HermesPrimitiveCodec codec)
        {
            ConcurrentDictionary<Triple<Tpp, string, bool>, List<AckContext>> msgSeqMap = new ConcurrentDictionary<Triple<Tpp, string, bool>, List<AckContext>>();

            int mapSize = codec.ReadInt();
            if (mapSize != 0)
            {
                List<Triple<Tpp, string, bool>> tppgrs = new List<Triple<Tpp, string, bool>>();
                for (int i = 0; i < mapSize; i++)
                {
                    Tpp tpp = new Tpp(codec.ReadString(), codec.ReadInt(), codec.ReadInt() == 0 ? true : false);
                    String groupId = codec.ReadString();
                    bool resend = codec.ReadBoolean();
                    tppgrs.Add(new Triple<Tpp, string, bool>(tpp, groupId, resend));
                }
                for (int i = 0; i < mapSize; i++)
                {
                    Triple<Tpp, string, bool> tppgr = tppgrs[i];

                    int len = codec.ReadInt();
                    if (len == 0)
                    {
                        msgSeqMap[tppgr] = new List<AckContext>();
                    }
                    else
                    {
                        msgSeqMap[tppgr] = new List<AckContext>(len);
                    }

                    for (int j = 0; j < len; j++)
                    {
                        msgSeqMap[tppgr].Add(new AckContext(codec.ReadLong(), codec.ReadInt(), codec.ReadLong(), codec.ReadLong()));
                    }
                }
            }

            return msgSeqMap;
        }
 protected override void Parse0(IoBuffer buf)
 {
     var codec = new HermesPrimitiveCodec(buf);
     Success = codec.ReadBoolean();
 }