private static byte[] GenerateBeginMessage(Process process, TProtocol oprot, out int spanCountPosition)
        {
            var struc = new TStruct("Batch");

            oprot.WriteStructBegin(struc);

            var field = new TField
            {
                Name = "process",
                Type = TType.Struct,
                ID   = 1,
            };

            oprot.WriteFieldBegin(field);
            process.Write(oprot);
            oprot.WriteFieldEnd();

            field.Name = "spans";
            field.Type = TType.List;
            field.ID   = 2;

            oprot.WriteFieldBegin(field);

            oprot.WriteListBegin(new TList(TType.Struct, 0), out spanCountPosition);

            byte[] beginMessage = oprot.WrittenData.ToArray();
            oprot.Clear();
            return(beginMessage);
        }
        private static byte[] GenerateEndMessage(TProtocol oprot)
        {
            oprot.WriteListEnd();

            oprot.WriteFieldEnd();
            oprot.WriteFieldStop();
            oprot.WriteStructEnd();

            byte[] endMessage = oprot.WrittenData.ToArray();
            oprot.Clear();
            return(endMessage);
        }
        private static byte[] GenerateBeginMessage(TProtocol oprot, out int seqIdPosition)
        {
            oprot.WriteMessageBegin(new TMessage("emitBatch", TMessageType.Oneway, 0), out seqIdPosition);

            var struc = new TStruct("emitBatch_args");
            oprot.WriteStructBegin(struc);

            var field = new TField
            {
                Name = "batch",
                Type = TType.Struct,
                ID = 1,
            };

            oprot.WriteFieldBegin(field);

            byte[] beginMessage = oprot.WrittenData.ToArray();
            oprot.Clear();
            return beginMessage;
        }