private TChannelMessage decodeCallContinueFrame()

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


    private TChannelMessage decodeCallContinueFrame(CallFrame frame)
        throws TChannelProtocol {

        List<CallFrame> frames = callFrames.get(frame.getId());
        if (frames == null) {
            throw new TChannelProtocol("Call continue frame recieved before call frame"); // FIXME typo
        }

        frames.add(frame);
        frame.retain();

        final TChannelMessage result;
        boolean release = true;
        try {
            if (!hasMore(frame)) {
                callFrames.remove(frame.getId());
                result = MessageCodec.decodeCallFrames(frames);
            } else {
                result = null;
            }
            release = false;
        } finally {
            if (release) {
                frame.release();
            }
        }
        return result;
    }