public ByteBuf encodeHeader()

in tchannel-core/src/main/java/com/uber/tchannel/frames/CallRequestFrame.java [105:137]


    public ByteBuf encodeHeader(ByteBufAllocator allocator) {
        ByteBuf buffer = allocator.buffer(1024);

        boolean release = true;
        try {
            // flags:1
            buffer.writeByte(getFlags());

            // ttl:4
            buffer.writeInt((int) getTTL());

            // tracing:25
            CodecUtils.encodeTrace(getTracing(), buffer);

            // service~1
            CodecUtils.encodeSmallString(getService(), buffer);

            // nh:1 (hk~1, hv~1){nh}
            CodecUtils.encodeSmallHeaders(getHeaders(), buffer);

            // csumtype:1
            buffer.writeByte(getChecksumType().byteValue());

            // (csum:4){0,1}
            CodecUtils.encodeChecksum(getChecksum(), getChecksumType(), buffer);
            release = false;
        } finally {
            if (release) {
                buffer.release();
            }
        }
        return buffer;
    }