in src/main/java/com/twitter/http2/HttpStreamEncoder.java [46:87]
public void write(final ChannelHandlerContext ctx, Object msg, ChannelPromise promise)
throws Exception {
if (msg instanceof HttpRequest) {
HttpRequest httpRequest = (HttpRequest) msg;
HttpHeadersFrame httpHeadersFrame = createHttpHeadersFrame(httpRequest);
currentStreamId = httpHeadersFrame.getStreamId();
ChannelPromise writeFuture = getMessageFuture(ctx, promise, currentStreamId, httpRequest);
if (promise == writeFuture) {
httpHeadersFrame.setLast(true);
} else {
promise = writeFuture;
}
ctx.write(httpHeadersFrame, promise);
} else if (msg instanceof HttpResponse) {
HttpResponse httpResponse = (HttpResponse) msg;
HttpHeadersFrame httpHeadersFrame = createHttpHeadersFrame(httpResponse);
currentStreamId = httpHeadersFrame.getStreamId();
ChannelPromise writeFuture = getMessageFuture(ctx, promise, currentStreamId, httpResponse);
if (promise == writeFuture) {
httpHeadersFrame.setLast(true);
} else {
promise = writeFuture;
}
ctx.write(httpHeadersFrame, promise);
} else if (msg instanceof HttpContent) {
HttpContent chunk = (HttpContent) msg;
writeChunk(ctx, promise, currentStreamId, chunk);
} else {
// Unknown message type
ctx.write(msg, promise);
}
}