Home / Class/ DefaultHttp2ConnectionEncoder Class — netty Architecture

DefaultHttp2ConnectionEncoder Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  895939a0_f585_4538_b1ac_90be365f6464["DefaultHttp2ConnectionEncoder"]
  6ee2373c_9254_f504_1a3e_e58265550287["DefaultHttp2ConnectionEncoder.java"]
  895939a0_f585_4538_b1ac_90be365f6464 -->|defined in| 6ee2373c_9254_f504_1a3e_e58265550287
  0f86b7a0_ad68_53f6_a1ae_79ab0078197e["DefaultHttp2ConnectionEncoder()"]
  895939a0_f585_4538_b1ac_90be365f6464 -->|method| 0f86b7a0_ad68_53f6_a1ae_79ab0078197e
  35a4a0af_54de_ec31_56cd_87b3a295380c["lifecycleManager()"]
  895939a0_f585_4538_b1ac_90be365f6464 -->|method| 35a4a0af_54de_ec31_56cd_87b3a295380c
  2250337d_cf75_fa32_f2d8_1eec527a86a0["Http2FrameWriter()"]
  895939a0_f585_4538_b1ac_90be365f6464 -->|method| 2250337d_cf75_fa32_f2d8_1eec527a86a0
  99a764a3_5d38_92b5_b6f7_772b4b655c07["Http2Connection()"]
  895939a0_f585_4538_b1ac_90be365f6464 -->|method| 99a764a3_5d38_92b5_b6f7_772b4b655c07
  12d63d17_4db1_1ab8_9c09_64adbfe7fdd4["Http2RemoteFlowController()"]
  895939a0_f585_4538_b1ac_90be365f6464 -->|method| 12d63d17_4db1_1ab8_9c09_64adbfe7fdd4
  3b9fd337_1dee_1fd1_8836_e44e24fe69ae["remoteSettings()"]
  895939a0_f585_4538_b1ac_90be365f6464 -->|method| 3b9fd337_1dee_1fd1_8836_e44e24fe69ae
  f7c83e25_f1bc_4ff3_1eaa_ebd5521fad31["ChannelFuture()"]
  895939a0_f585_4538_b1ac_90be365f6464 -->|method| f7c83e25_f1bc_4ff3_1eaa_ebd5521fad31
  fc927e32_0015_8367_c80d_152971d2d016["validateHeadersSentState()"]
  895939a0_f585_4538_b1ac_90be365f6464 -->|method| fc927e32_0015_8367_c80d_152971d2d016
  5406f95c_8457_e7c1_b4a1_fb2214b40c94["close()"]
  895939a0_f585_4538_b1ac_90be365f6464 -->|method| 5406f95c_8457_e7c1_b4a1_fb2214b40c94
  d44a59a2_d17e_778a_d6e4_5e4d99fe8f88["Http2Settings()"]
  895939a0_f585_4538_b1ac_90be365f6464 -->|method| d44a59a2_d17e_778a_d6e4_5e4d99fe8f88
  b8ae0b17_4325_bdc1_c57b_560163940fbe["Configuration()"]
  895939a0_f585_4538_b1ac_90be365f6464 -->|method| b8ae0b17_4325_bdc1_c57b_560163940fbe
  28005313_29f0_6118_edfe_4df9fd5529aa["Http2Stream()"]
  895939a0_f585_4538_b1ac_90be365f6464 -->|method| 28005313_29f0_6118_edfe_4df9fd5529aa
  2a881bdd_a61f_ddec_039f_13f1f832d86c["consumeReceivedSettings()"]
  895939a0_f585_4538_b1ac_90be365f6464 -->|method| 2a881bdd_a61f_ddec_039f_13f1f832d86c

Relationship Graph

Source Code

codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2ConnectionEncoder.java lines 41–629

public class DefaultHttp2ConnectionEncoder implements Http2ConnectionEncoder, Http2SettingsReceivedConsumer {
    private final Http2FrameWriter frameWriter;
    private final Http2Connection connection;
    private Http2LifecycleManager lifecycleManager;
    // We prefer ArrayDeque to LinkedList because later will produce more GC.
    // This initial capacity is plenty for SETTINGS traffic.
    private final Queue<Http2Settings> outstandingLocalSettingsQueue = new ArrayDeque<Http2Settings>(4);
    private Queue<Http2Settings> outstandingRemoteSettingsQueue;

    public DefaultHttp2ConnectionEncoder(Http2Connection connection, Http2FrameWriter frameWriter) {
        this.connection = checkNotNull(connection, "connection");
        this.frameWriter = checkNotNull(frameWriter, "frameWriter");
        if (connection.remote().flowController() == null) {
            connection.remote().flowController(new DefaultHttp2RemoteFlowController(connection));
        }
    }

    @Override
    public void lifecycleManager(Http2LifecycleManager lifecycleManager) {
        this.lifecycleManager = checkNotNull(lifecycleManager, "lifecycleManager");
    }

    @Override
    public Http2FrameWriter frameWriter() {
        return frameWriter;
    }

    @Override
    public Http2Connection connection() {
        return connection;
    }

    @Override
    public final Http2RemoteFlowController flowController() {
        return connection().remote().flowController();
    }

    @Override
    public void remoteSettings(Http2Settings settings) throws Http2Exception {
        Boolean pushEnabled = settings.pushEnabled();
        Http2FrameWriter.Configuration config = configuration();
        Http2HeadersEncoder.Configuration outboundHeaderConfig = config.headersConfiguration();
        Http2FrameSizePolicy outboundFrameSizePolicy = config.frameSizePolicy();
        if (pushEnabled != null) {
            if (!connection.isServer() && pushEnabled) {
                throw connectionError(PROTOCOL_ERROR,
                    "Client received a value of ENABLE_PUSH specified to other than 0");
            }
            connection.remote().allowPushTo(pushEnabled);
        }

        Long maxConcurrentStreams = settings.maxConcurrentStreams();
        if (maxConcurrentStreams != null) {
            connection.local().maxActiveStreams((int) min(maxConcurrentStreams, MAX_VALUE));
        }

        Long headerTableSize = settings.headerTableSize();
        if (headerTableSize != null) {
            outboundHeaderConfig.maxHeaderTableSize(headerTableSize);
        }

        Long maxHeaderListSize = settings.maxHeaderListSize();
        if (maxHeaderListSize != null) {
            outboundHeaderConfig.maxHeaderListSize(maxHeaderListSize);
        }

        Integer maxFrameSize = settings.maxFrameSize();
        if (maxFrameSize != null) {
            outboundFrameSizePolicy.maxFrameSize(maxFrameSize);
        }

        Integer initialWindowSize = settings.initialWindowSize();
        if (initialWindowSize != null) {
            flowController().initialWindowSize(initialWindowSize);
        }
    }

    @Override
    public ChannelFuture writeData(final ChannelHandlerContext ctx, final int streamId, ByteBuf data, int padding,
            final boolean endOfStream, ChannelPromise promise) {
        promise = promise.unvoid();

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free