Home / Class/ DefaultHttp2ConnectionDecoder Class — netty Architecture

DefaultHttp2ConnectionDecoder Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  b3fe26c0_8414_9998_6798_f8346e67f5e1["DefaultHttp2ConnectionDecoder"]
  a43ecbf7_4477_1770_e9bd_6bd36bd824e3["DefaultHttp2ConnectionDecoder.java"]
  b3fe26c0_8414_9998_6798_f8346e67f5e1 -->|defined in| a43ecbf7_4477_1770_e9bd_6bd36bd824e3
  4ab0329e_298f_9d11_7785_fa1411e84c17["DefaultHttp2ConnectionDecoder()"]
  b3fe26c0_8414_9998_6798_f8346e67f5e1 -->|method| 4ab0329e_298f_9d11_7785_fa1411e84c17
  e05f46f2_da47_22f9_b276_9ceca95059ee["lifecycleManager()"]
  b3fe26c0_8414_9998_6798_f8346e67f5e1 -->|method| e05f46f2_da47_22f9_b276_9ceca95059ee
  0a77b8b9_94bd_0768_bc3b_4f58ae79da81["Http2Connection()"]
  b3fe26c0_8414_9998_6798_f8346e67f5e1 -->|method| 0a77b8b9_94bd_0768_bc3b_4f58ae79da81
  26763032_af2d_48cc_e060_d48771f71a25["Http2LocalFlowController()"]
  b3fe26c0_8414_9998_6798_f8346e67f5e1 -->|method| 26763032_af2d_48cc_e060_d48771f71a25
  4646d39c_3e91_4f26_b450_e12319f61610["frameListener()"]
  b3fe26c0_8414_9998_6798_f8346e67f5e1 -->|method| 4646d39c_3e91_4f26_b450_e12319f61610
  17ebae6e_7ffa_02ac_058b_5460d7532bf6["Http2FrameListener()"]
  b3fe26c0_8414_9998_6798_f8346e67f5e1 -->|method| 17ebae6e_7ffa_02ac_058b_5460d7532bf6
  913048a5_596a_cc05_af31_86bdc56cd729["prefaceReceived()"]
  b3fe26c0_8414_9998_6798_f8346e67f5e1 -->|method| 913048a5_596a_cc05_af31_86bdc56cd729
  412a4687_995a_9fbe_3d43_8a474f08bfea["decodeFrame()"]
  b3fe26c0_8414_9998_6798_f8346e67f5e1 -->|method| 412a4687_995a_9fbe_3d43_8a474f08bfea
  410fdca1_9d26_6c4b_11a1_893f0d4582ea["Http2Settings()"]
  b3fe26c0_8414_9998_6798_f8346e67f5e1 -->|method| 410fdca1_9d26_6c4b_11a1_893f0d4582ea
  b528acf6_dd3d_2278_14f6_2fa44d2dc26a["close()"]
  b3fe26c0_8414_9998_6798_f8346e67f5e1 -->|method| b528acf6_dd3d_2278_14f6_2fa44d2dc26a
  495162e3_2f1d_1166_c93c_76dc9e177571["calculateMaxHeaderListSizeGoAway()"]
  b3fe26c0_8414_9998_6798_f8346e67f5e1 -->|method| 495162e3_2f1d_1166_c93c_76dc9e177571
  5099d76e_2045_154d_ff39_253bfca400b1["unconsumedBytes()"]
  b3fe26c0_8414_9998_6798_f8346e67f5e1 -->|method| 5099d76e_2045_154d_ff39_253bfca400b1
  c7a0a5cb_4d8d_fe4a_f939_852c50e52bed["onGoAwayRead0()"]
  b3fe26c0_8414_9998_6798_f8346e67f5e1 -->|method| c7a0a5cb_4d8d_fe4a_f939_852c50e52bed

Relationship Graph

Source Code

codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2ConnectionDecoder.java lines 53–835

public class DefaultHttp2ConnectionDecoder implements Http2ConnectionDecoder {
    private static final InternalLogger logger = InternalLoggerFactory.getInstance(DefaultHttp2ConnectionDecoder.class);
    private Http2FrameListener internalFrameListener = new PrefaceFrameListener();
    private final Http2Connection connection;
    private Http2LifecycleManager lifecycleManager;
    private final Http2ConnectionEncoder encoder;
    private final Http2FrameReader frameReader;
    private Http2FrameListener listener;
    private final Http2PromisedRequestVerifier requestVerifier;
    private final Http2SettingsReceivedConsumer settingsReceivedConsumer;
    private final boolean autoAckPing;
    private final Http2Connection.PropertyKey contentLengthKey;
    private final boolean validateHeaders;

    public DefaultHttp2ConnectionDecoder(Http2Connection connection,
                                         Http2ConnectionEncoder encoder,
                                         Http2FrameReader frameReader) {
        this(connection, encoder, frameReader, ALWAYS_VERIFY);
    }

    public DefaultHttp2ConnectionDecoder(Http2Connection connection,
                                         Http2ConnectionEncoder encoder,
                                         Http2FrameReader frameReader,
                                         Http2PromisedRequestVerifier requestVerifier) {
        this(connection, encoder, frameReader, requestVerifier, true);
    }

    /**
     * Create a new instance.
     * @param connection The {@link Http2Connection} associated with this decoder.
     * @param encoder The {@link Http2ConnectionEncoder} associated with this decoder.
     * @param frameReader Responsible for reading/parsing the raw frames. As opposed to this object which applies
     *                    h2 semantics on top of the frames.
     * @param requestVerifier Determines if push promised streams are valid.
     * @param autoAckSettings {@code false} to disable automatically applying and sending settings acknowledge frame.
     *  The {@code Http2ConnectionEncoder} is expected to be an instance of {@link Http2SettingsReceivedConsumer} and
     *  will apply the earliest received but not yet ACKed SETTINGS when writing the SETTINGS ACKs.
     * {@code true} to enable automatically applying and sending settings acknowledge frame.
     */
    public DefaultHttp2ConnectionDecoder(Http2Connection connection,
                                         Http2ConnectionEncoder encoder,
                                         Http2FrameReader frameReader,
                                         Http2PromisedRequestVerifier requestVerifier,
                                         boolean autoAckSettings) {
        this(connection, encoder, frameReader, requestVerifier, autoAckSettings, true);
    }

    @Deprecated
    public DefaultHttp2ConnectionDecoder(Http2Connection connection,
                                         Http2ConnectionEncoder encoder,
                                         Http2FrameReader frameReader,
                                         Http2PromisedRequestVerifier requestVerifier,
                                         boolean autoAckSettings,
                                         boolean autoAckPing) {
        this(connection, encoder, frameReader, requestVerifier, autoAckSettings, autoAckPing, true);
    }

    /**
     * Create a new instance.
     * @param connection The {@link Http2Connection} associated with this decoder.
     * @param encoder The {@link Http2ConnectionEncoder} associated with this decoder.
     * @param frameReader Responsible for reading/parsing the raw frames. As opposed to this object which applies
     *                    h2 semantics on top of the frames.
     * @param requestVerifier Determines if push promised streams are valid.
     * @param autoAckSettings {@code false} to disable automatically applying and sending settings acknowledge frame.
     *                        The {@code Http2ConnectionEncoder} is expected to be an instance of
     *                        {@link Http2SettingsReceivedConsumer} and will apply the earliest received but not yet
     *                        ACKed SETTINGS when writing the SETTINGS ACKs. {@code true} to enable automatically
     *                        applying and sending settings acknowledge frame.
     * @param autoAckPing {@code false} to disable automatically sending ping acknowledge frame. {@code true} to enable
     *                    automatically sending ping ack frame.
     */
    public DefaultHttp2ConnectionDecoder(Http2Connection connection,
                                         Http2ConnectionEncoder encoder,
                                         Http2FrameReader frameReader,
                                         Http2PromisedRequestVerifier requestVerifier,
                                         boolean autoAckSettings,
                                         boolean autoAckPing,
                                         boolean validateHeaders) {
        this.validateHeaders = validateHeaders;
        this.autoAckPing = autoAckPing;

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free