public static ByteBuf encode()

in tchannel-core/src/main/java/com/uber/tchannel/codecs/TFrameCodec.java [70:107]


    public static ByteBuf encode(ByteBufAllocator allocator, TFrame frame) {
        ByteBuf buffer = allocator.buffer(TFrame.FRAME_HEADER_LENGTH, TFrame.FRAME_HEADER_LENGTH);

        final ByteBuf result;
        boolean release = true;
        try {
            // size:2
            buffer.writeShort(frame.size + TFrame.FRAME_HEADER_LENGTH);

            // type:1
            buffer.writeByte(frame.type);

            // reserved:1
            buffer.writeZero(1);

            // id:4
            buffer.writeInt((int) frame.id);

            // reserved:8
            buffer.writeZero(8);

            // TODO: refactor
            if (frame.payload instanceof CompositeByteBuf) {
                CompositeByteBuf cbf = (CompositeByteBuf) frame.payload;
                cbf.addComponent(0, buffer);
                cbf.writerIndex(cbf.writerIndex() + TFrame.FRAME_HEADER_LENGTH);
                result = cbf;
            } else {
                result = Unpooled.wrappedBuffer(buffer, frame.payload);
            }
            release = false;
        } finally {
            if (release) {
                buffer.release();
            }
        }
        return result;
    }