private void writeMsgSeqMap(HermesPrimitiveCodec codec,
                                    ConcurrentDictionary<Triple<Tpp, String, Boolean>, List<AckContext>> msgSeqMap)
        {
            if (msgSeqMap == null)
            {
                codec.WriteInt(0);
            }
            else
            {
                codec.WriteInt(msgSeqMap.Count);
                foreach (Triple<Tpp, String, Boolean> tppgr in msgSeqMap.Keys)
                {
                    Tpp tpp = tppgr.First;
                    codec.WriteString(tpp.Topic);
                    codec.WriteInt(tpp.Partition);
                    codec.WriteInt(tpp.Priority ? 0 : 1);
                    codec.WriteString(tppgr.Middle);
                    codec.WriteBoolean(tppgr.Last);
                }
                foreach (Triple<Tpp, String, Boolean> tppgr in msgSeqMap.Keys)
                {
                    List<AckContext> contexts = msgSeqMap[tppgr];

                    if (contexts == null || contexts.Count == 0)
                    {
                        codec.WriteInt(0);
                    }
                    else
                    {
                        codec.WriteInt(contexts.Count);
                        foreach (AckContext context in contexts)
                        {
                            codec.WriteLong(context.MsgSeq);
                            codec.WriteInt(context.RemainingRetries);
                            codec.WriteLong(context.OnMessageStartTimeMillis);
                            codec.WriteLong(context.OnMessageEndTimeMillis);
                        }
                    }
                }
            }

        }
 protected override void ToBytes0(IoBuffer buf)
 {
     var codec = new HermesPrimitiveCodec(buf);
     codec.WriteBoolean(Success);
 }