Home / Class/ Http2OrHttpHandler Class — netty Architecture

Http2OrHttpHandler Class — netty Architecture

Architecture documentation for the Http2OrHttpHandler class in Http2OrHttpHandler.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  7669a10d_56a3_ef47_26ed_a6c191afc22a["Http2OrHttpHandler"]
  71b74ecd_6a30_f662_627c_6d148a1600a3["Http2OrHttpHandler.java"]
  7669a10d_56a3_ef47_26ed_a6c191afc22a -->|defined in| 71b74ecd_6a30_f662_627c_6d148a1600a3
  42de1989_a620_dd14_854d_598dd61d2b82["Http2OrHttpHandler()"]
  7669a10d_56a3_ef47_26ed_a6c191afc22a -->|method| 42de1989_a620_dd14_854d_598dd61d2b82
  03be05a7_3811_0be5_4bb0_2e03b48eaff4["configurePipeline()"]
  7669a10d_56a3_ef47_26ed_a6c191afc22a -->|method| 03be05a7_3811_0be5_4bb0_2e03b48eaff4
  0311c76b_e4c8_a854_debb_a204d3b27141["configureHttp2()"]
  7669a10d_56a3_ef47_26ed_a6c191afc22a -->|method| 0311c76b_e4c8_a854_debb_a204d3b27141
  98da28da_a409_4639_01a1_38e9c8fd346f["configureHttp1()"]
  7669a10d_56a3_ef47_26ed_a6c191afc22a -->|method| 98da28da_a409_4639_01a1_38e9c8fd346f

Relationship Graph

Source Code

example/src/main/java/io/netty/example/http2/tiles/Http2OrHttpHandler.java lines 33–75

public class Http2OrHttpHandler extends ApplicationProtocolNegotiationHandler {

    private static final int MAX_CONTENT_LENGTH = 1024 * 100;

    protected Http2OrHttpHandler() {
        super(ApplicationProtocolNames.HTTP_1_1);
    }

    @Override
    protected void configurePipeline(ChannelHandlerContext ctx, String protocol) throws Exception {
        if (ApplicationProtocolNames.HTTP_2.equals(protocol)) {
            configureHttp2(ctx);
            return;
        }

        if (ApplicationProtocolNames.HTTP_1_1.equals(protocol)) {
            configureHttp1(ctx);
            return;
        }

        throw new IllegalStateException("unknown protocol: " + protocol);
    }

    private static void configureHttp2(ChannelHandlerContext ctx) {
        DefaultHttp2Connection connection = new DefaultHttp2Connection(true);
        InboundHttp2ToHttpAdapter listener = new InboundHttp2ToHttpAdapterBuilder(connection)
                .propagateSettings(true).validateHttpHeaders(false)
                .maxContentLength(MAX_CONTENT_LENGTH).build();

        ctx.pipeline().addLast(new HttpToHttp2ConnectionHandlerBuilder()
                .frameListener(listener)
                // .frameLogger(TilesHttp2ToHttpHandler.logger)
                .connection(connection).build());

        ctx.pipeline().addLast(new Http2RequestHandler());
    }

    private static void configureHttp1(ChannelHandlerContext ctx) throws Exception {
        ctx.pipeline().addLast(new HttpServerCodec(),
                               new HttpObjectAggregator(MAX_CONTENT_LENGTH),
                               new FallbackRequestHandler());
    }
}

Frequently Asked Questions

What is the Http2OrHttpHandler class?
Http2OrHttpHandler is a class in the netty codebase, defined in example/src/main/java/io/netty/example/http2/tiles/Http2OrHttpHandler.java.
Where is Http2OrHttpHandler defined?
Http2OrHttpHandler is defined in example/src/main/java/io/netty/example/http2/tiles/Http2OrHttpHandler.java at line 33.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free