HttpServerExpectContinueHandler Class — netty Architecture
Architecture documentation for the HttpServerExpectContinueHandler class in HttpServerExpectContinueHandler.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD dc8fa8a8_909d_5919_73f2_7917c9341dcd["HttpServerExpectContinueHandler"] 1e62f796_eaf2_2084_df89_a0c9dc81eba6["HttpServerExpectContinueHandler.java"] dc8fa8a8_909d_5919_73f2_7917c9341dcd -->|defined in| 1e62f796_eaf2_2084_df89_a0c9dc81eba6 7ab4a15c_ec57_7b5e_d8e8_982bfd2745d5["HttpResponse()"] dc8fa8a8_909d_5919_73f2_7917c9341dcd -->|method| 7ab4a15c_ec57_7b5e_d8e8_982bfd2745d5 63218365_8866_2931_4131_02bdfe3bcfb6["channelRead()"] dc8fa8a8_909d_5919_73f2_7917c9341dcd -->|method| 63218365_8866_2931_4131_02bdfe3bcfb6
Relationship Graph
Source Code
codec-http/src/main/java/io/netty/handler/codec/http/HttpServerExpectContinueHandler.java lines 47–97
public class HttpServerExpectContinueHandler extends ChannelInboundHandlerAdapter {
private static final FullHttpResponse EXPECTATION_FAILED = new DefaultFullHttpResponse(
HTTP_1_1, HttpResponseStatus.EXPECTATION_FAILED, Unpooled.EMPTY_BUFFER);
private static final FullHttpResponse ACCEPT = new DefaultFullHttpResponse(
HTTP_1_1, CONTINUE, Unpooled.EMPTY_BUFFER);
static {
EXPECTATION_FAILED.headers().set(CONTENT_LENGTH, 0);
ACCEPT.headers().set(CONTENT_LENGTH, 0);
}
/**
* Produces a {@link HttpResponse} for {@link HttpRequest}s which define an expectation. Returns {@code null} if the
* request should be rejected. See {@link #rejectResponse(HttpRequest)}.
*/
protected HttpResponse acceptMessage(@SuppressWarnings("unused") HttpRequest request) {
return ACCEPT.retainedDuplicate();
}
/**
* Returns the appropriate 4XX {@link HttpResponse} for the given {@link HttpRequest}.
*/
protected HttpResponse rejectResponse(@SuppressWarnings("unused") HttpRequest request) {
return EXPECTATION_FAILED.retainedDuplicate();
}
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
if (msg instanceof HttpRequest) {
HttpRequest req = (HttpRequest) msg;
if (HttpUtil.is100ContinueExpected(req)) {
HttpResponse accept = acceptMessage(req);
if (accept == null) {
// the expectation failed so we refuse the request.
HttpResponse rejection = rejectResponse(req);
ReferenceCountUtil.release(msg);
ctx.writeAndFlush(rejection).addListener(ChannelFutureListener.CLOSE_ON_FAILURE);
return;
}
ctx.writeAndFlush(accept).addListener(ChannelFutureListener.CLOSE_ON_FAILURE);
req.headers().remove(HttpHeaderNames.EXPECT);
}
}
super.channelRead(ctx, msg);
}
}
Defined In
Source
Frequently Asked Questions
What is the HttpServerExpectContinueHandler class?
HttpServerExpectContinueHandler is a class in the netty codebase, defined in codec-http/src/main/java/io/netty/handler/codec/http/HttpServerExpectContinueHandler.java.
Where is HttpServerExpectContinueHandler defined?
HttpServerExpectContinueHandler is defined in codec-http/src/main/java/io/netty/handler/codec/http/HttpServerExpectContinueHandler.java at line 47.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free