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;
}