protected void decode()

in tchannel-core/src/main/java/com/uber/tchannel/handlers/MessageDefragmenter.java [62:89]


    protected void decode(ChannelHandlerContext ctx, ByteBuf buf, List<Object> out) throws Exception {

        buf.touch("MessageDefragmenter.decode(...)");
        Frame frame = MessageCodec.decode(
            MessageCodec.decode(buf)
        );

        TChannelMessage msg = null;
        switch (frame.getType()) {
            case CallRequest:
            case CallResponse:
                msg = decodeCallFrame(ctx, (CallFrame) frame);
                break;
            case CallRequestContinue:
            case CallResponseContinue:
                msg = decodeCallContinueFrame((CallFrame) frame);
                break;
            case Error:
                msg = MessageCodec.decodeErrorResponse((ErrorFrame) frame);
                break;
            default:
                break;
        }

        if (msg != null) {
            out.add(msg);
        }
    }