Home / Class/ Http2MultiplexCodecBuilder Class — netty Architecture

Http2MultiplexCodecBuilder Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  11f07d9f_1385_85d0_3819_71b4499f6830["Http2MultiplexCodecBuilder"]
  1f57fc3b_bef4_ae1b_e6f0_0b24842cee4a["Http2MultiplexCodecBuilder.java"]
  11f07d9f_1385_85d0_3819_71b4499f6830 -->|defined in| 1f57fc3b_bef4_ae1b_e6f0_0b24842cee4a
  d55c9a96_d9d5_cb2f_7422_a4481d9fc304["Http2MultiplexCodecBuilder()"]
  11f07d9f_1385_85d0_3819_71b4499f6830 -->|method| d55c9a96_d9d5_cb2f_7422_a4481d9fc304
  e83c57bb_7033_08c1_c8ab_8fd76e8bcf73["ChannelHandler()"]
  11f07d9f_1385_85d0_3819_71b4499f6830 -->|method| e83c57bb_7033_08c1_c8ab_8fd76e8bcf73
  b7da8b3d_51e2_31ba_91e0_4b3f98b6af1b["Http2Settings()"]
  11f07d9f_1385_85d0_3819_71b4499f6830 -->|method| b7da8b3d_51e2_31ba_91e0_4b3f98b6af1b
  148fc613_cd86_909a_402e_f0193b08cec9["gracefulShutdownTimeoutMillis()"]
  11f07d9f_1385_85d0_3819_71b4499f6830 -->|method| 148fc613_cd86_909a_402e_f0193b08cec9
  e16a7041_d3a6_daf7_8940_85c8aebcfa25["isServer()"]
  11f07d9f_1385_85d0_3819_71b4499f6830 -->|method| e16a7041_d3a6_daf7_8940_85c8aebcfa25
  1a69708d_3e90_d2b0_fde8_15f1556d9c51["maxReservedStreams()"]
  11f07d9f_1385_85d0_3819_71b4499f6830 -->|method| 1a69708d_3e90_d2b0_fde8_15f1556d9c51
  04803313_04ad_72cf_56a8_77c5f1f27f7d["isValidateHeaders()"]
  11f07d9f_1385_85d0_3819_71b4499f6830 -->|method| 04803313_04ad_72cf_56a8_77c5f1f27f7d
  bdf17c63_994d_03e8_eab4_85e452e93e8a["Http2FrameLogger()"]
  11f07d9f_1385_85d0_3819_71b4499f6830 -->|method| bdf17c63_994d_03e8_eab4_85e452e93e8a
  d4e2e774_b975_836c_ae48_650bc0d482ca["encoderEnforceMaxConcurrentStreams()"]
  11f07d9f_1385_85d0_3819_71b4499f6830 -->|method| d4e2e774_b975_836c_ae48_650bc0d482ca
  d8d31962_d4e9_ead4_f0c6_e745d00bf856["encoderEnforceMaxQueuedControlFrames()"]
  11f07d9f_1385_85d0_3819_71b4499f6830 -->|method| d8d31962_d4e9_ead4_f0c6_e745d00bf856
  6f9a274f_c9f0_123e_5666_a4b1a4640b25["headerSensitivityDetector()"]
  11f07d9f_1385_85d0_3819_71b4499f6830 -->|method| 6f9a274f_c9f0_123e_5666_a4b1a4640b25
  2c544152_f1e8_4e7f_3cc0_384afe6a7bae["decoderEnforceMaxConsecutiveEmptyDataFrames()"]
  11f07d9f_1385_85d0_3819_71b4499f6830 -->|method| 2c544152_f1e8_4e7f_3cc0_384afe6a7bae
  763724bf_3069_043c_1813_3012159c48e5["Http2MultiplexCodec()"]
  11f07d9f_1385_85d0_3819_71b4499f6830 -->|method| 763724bf_3069_043c_1813_3012159c48e5

Relationship Graph

Source Code

codec-http2/src/main/java/io/netty/handler/codec/http2/Http2MultiplexCodecBuilder.java lines 28–264

@Deprecated
public class Http2MultiplexCodecBuilder
        extends AbstractHttp2ConnectionHandlerBuilder<Http2MultiplexCodec, Http2MultiplexCodecBuilder> {
    private Http2FrameWriter frameWriter;

    final ChannelHandler childHandler;
    private ChannelHandler upgradeStreamHandler;

    Http2MultiplexCodecBuilder(boolean server, ChannelHandler childHandler) {
        server(server);
        this.childHandler = checkSharable(checkNotNull(childHandler, "childHandler"));
        // For backwards compatibility we should disable to timeout by default at this layer.
        gracefulShutdownTimeoutMillis(0);
    }

    private static ChannelHandler checkSharable(ChannelHandler handler) {
        if (handler instanceof ChannelHandlerAdapter && !((ChannelHandlerAdapter) handler).isSharable() &&
                !handler.getClass().isAnnotationPresent(ChannelHandler.Sharable.class)) {
            throw new IllegalArgumentException("The handler must be Sharable");
        }
        return handler;
    }

    // For testing only.
    Http2MultiplexCodecBuilder frameWriter(Http2FrameWriter frameWriter) {
        this.frameWriter = checkNotNull(frameWriter, "frameWriter");
        return this;
    }

    /**
     * Creates a builder for an HTTP/2 client.
     *
     * @param childHandler the handler added to channels for remotely-created streams. It must be
     *     {@link ChannelHandler.Sharable}.
     */
    public static Http2MultiplexCodecBuilder forClient(ChannelHandler childHandler) {
        return new Http2MultiplexCodecBuilder(false, childHandler);
    }

    /**
     * Creates a builder for an HTTP/2 server.
     *
     * @param childHandler the handler added to channels for remotely-created streams. It must be
     *     {@link ChannelHandler.Sharable}.
     */
    public static Http2MultiplexCodecBuilder forServer(ChannelHandler childHandler) {
        return new Http2MultiplexCodecBuilder(true, childHandler);
    }

    public Http2MultiplexCodecBuilder withUpgradeStreamHandler(ChannelHandler upgradeStreamHandler) {
        if (isServer()) {
            throw new IllegalArgumentException("Server codecs don't use an extra handler for the upgrade stream");
        }
        this.upgradeStreamHandler = upgradeStreamHandler;
        return this;
    }

    @Override
    public Http2Settings initialSettings() {
        return super.initialSettings();
    }

    @Override
    public Http2MultiplexCodecBuilder initialSettings(Http2Settings settings) {
        return super.initialSettings(settings);
    }

    @Override
    public long gracefulShutdownTimeoutMillis() {
        return super.gracefulShutdownTimeoutMillis();
    }

    @Override
    public Http2MultiplexCodecBuilder gracefulShutdownTimeoutMillis(long gracefulShutdownTimeoutMillis) {
        return super.gracefulShutdownTimeoutMillis(gracefulShutdownTimeoutMillis);
    }

    @Override
    public boolean isServer() {
        return super.isServer();
    }

Frequently Asked Questions

What is the Http2MultiplexCodecBuilder class?
Http2MultiplexCodecBuilder is a class in the netty codebase, defined in codec-http2/src/main/java/io/netty/handler/codec/http2/Http2MultiplexCodecBuilder.java.
Where is Http2MultiplexCodecBuilder defined?
Http2MultiplexCodecBuilder is defined in codec-http2/src/main/java/io/netty/handler/codec/http2/Http2MultiplexCodecBuilder.java at line 28.

Analyze Your Own Codebase

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

Try Supermodel Free