@Override public boolean endOfMessage() { return delegate.endOfMessage(); }
@Override public void channelRead0(ChannelHandlerContext ctx, Response response) throws Exception { if (response.endOfMessage()) { state.onResponse(ctx, response); } ctx.fireChannelRead(response); }
void onOutboundResponse(Response response) { MessageMetaState initialRequest = streamIdRequests.get(response.streamId()); if (initialRequest != null && response.endOfMessage()) { initialRequest.responseFinished = true; } }
@Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { log.debug("RawBackendHandler[{}] channelRead: {}", this, msg); if (msg instanceof Response) { Response response = (Response) msg; if (response.endOfMessage()) { frontend.writeAndFlush(msg).addListener(errorListenter); } else { frontend.write(msg).addListener(errorListenter); } } else { frontend.write(msg).addListener(errorListenter); needFlush = true; } }
@Override public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception { if (!(msg instanceof Response)) { ctx.write(msg, promise); return; } Response response = (Response) msg; if (response.endOfMessage()) { ctx.write(msg, promise) .addListener(future -> state.onResponse(ctx, response, future.cause())); } else { ctx.write(msg, promise); } } }
@Override public void channelRead0(ChannelHandlerContext ctx, Response object) throws Exception { if (object.endOfMessage()) { response = object; local.complete(response); } }
public void onResponseDrainNext(ChannelHandlerContext ctx, Response response) { currentResponse = response; if (response.endOfMessage()) { streamQueue.remove(response.streamId()); nextStreamsQueue() .ifPresent( queue -> { while (!queue.isEmpty()) { PendingRequest pending = queue.remove(); log.debug("writing enqueued h2-h1 proxy request {}", pending.request); if (queue.isEmpty()) { ctx.writeAndFlush(pending.request, pending.promise); } else { ctx.write(pending.request, pending.promise); } } }); } }
Response onInboundResponse(Response response) { MessageMetaState initialRequest = streamIdRequests.get(response.streamId()); if (initialRequest == null) { if (response.startOfMessage()) { streamIdRequests.put( response.streamId(), new MessageMetaState(response, response.endOfMessage())); } else { log.error( "Received an h2 message segment without initial startOfMessage == true - response: {}", response); } } else { initialRequest.responseFinished = response.endOfMessage(); } return response; }