public static Request decodeCallRequest()

in tchannel-core/src/main/java/com/uber/tchannel/codecs/MessageCodec.java [113:150]


    public static Request decodeCallRequest(List<CallFrame> frames) {

        if (frames.isEmpty()) {
            return null;
        }

        CallRequestFrame first = (CallRequestFrame) frames.get(0);
        ArgScheme scheme = ArgScheme.toScheme(
            first.getHeaders().get(TransportHeaders.ARG_SCHEME_KEY));
        if (!ArgScheme.isSupported(scheme)) {
            return null;
        }

        List<ByteBuf> args = new ArrayList<>();
        for (CallFrame frame : frames) {
            CodecUtils.readArgs(args, frame.getPayload());
            frame.release();
        }

        if (args.size() != 3) {
            for (ByteBuf arg : args) {
                arg.release();
            }

            throw new UnsupportedOperationException("The arg count is not should be 3 instead of " + args.size());
        }

        return Request.build(
            scheme,
            first.getId(),
            first.getTTL(),
            first.getTracing(),
            first.getService(),
            first.getHeaders(),
            args.get(0),
            args.get(1),
            args.get(2));
    }