Home / Class/ Http3RequestStreamInboundHandler Class — netty Architecture

Http3RequestStreamInboundHandler Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  8f22a8be_cef4_bc4e_a01f_25a64288a1f5["Http3RequestStreamInboundHandler"]
  8eec1f92_fcec_7fa3_63c2_625544813350["Http3RequestStreamInboundHandler.java"]
  8f22a8be_cef4_bc4e_a01f_25a64288a1f5 -->|defined in| 8eec1f92_fcec_7fa3_63c2_625544813350
  9b23be85_101e_94f6_4a97_a97612af1187["channelRead()"]
  8f22a8be_cef4_bc4e_a01f_25a64288a1f5 -->|method| 9b23be85_101e_94f6_4a97_a97612af1187
  553f75f2_92cd_0274_1973_c336944d0f16["userEventTriggered()"]
  8f22a8be_cef4_bc4e_a01f_25a64288a1f5 -->|method| 553f75f2_92cd_0274_1973_c336944d0f16
  1083000f_291b_de8e_4e02_c9af8ecd7616["exceptionCaught()"]
  8f22a8be_cef4_bc4e_a01f_25a64288a1f5 -->|method| 1083000f_291b_de8e_4e02_c9af8ecd7616
  1d3e765a_5d7a_0e26_be30_2dd082a797ac["channelInputClosed()"]
  8f22a8be_cef4_bc4e_a01f_25a64288a1f5 -->|method| 1d3e765a_5d7a_0e26_be30_2dd082a797ac
  9323b1ba_fbe9_51e2_bb3a_55592e9be678["handleQuicException()"]
  8f22a8be_cef4_bc4e_a01f_25a64288a1f5 -->|method| 9323b1ba_fbe9_51e2_bb3a_55592e9be678
  dbca3a59_62c0_bc41_fc9a_3e4e33f92362["handleHttp3Exception()"]
  8f22a8be_cef4_bc4e_a01f_25a64288a1f5 -->|method| dbca3a59_62c0_bc41_fc9a_3e4e33f92362
  36d2df58_6a16_73e7_e058_2fe26c6105d6["QuicStreamChannel()"]
  8f22a8be_cef4_bc4e_a01f_25a64288a1f5 -->|method| 36d2df58_6a16_73e7_e058_2fe26c6105d6

Relationship Graph

Source Code

codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamInboundHandler.java lines 31–137

public abstract class Http3RequestStreamInboundHandler extends ChannelInboundHandlerAdapter {
    private static final InternalLogger logger =
            InternalLoggerFactory.getInstance(Http3RequestStreamInboundHandler.class);

    @Override
    public final void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
        if (msg instanceof Http3UnknownFrame) {
            channelRead(ctx, (Http3UnknownFrame) msg);
        } else if (msg instanceof Http3HeadersFrame) {
            channelRead(ctx, (Http3HeadersFrame) msg);
        } else if (msg instanceof Http3DataFrame) {
            channelRead(ctx, (Http3DataFrame) msg);
        } else {
            super.channelRead(ctx, msg);
        }
    }

    @Override
    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
        if (evt == ChannelInputShutdownEvent.INSTANCE) {
            channelInputClosed(ctx);
        }
        ctx.fireUserEventTriggered(evt);
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
        if (cause instanceof QuicException) {
            handleQuicException(ctx, (QuicException) cause);
        } else if (cause instanceof Http3Exception) {
            handleHttp3Exception(ctx, (Http3Exception) cause);
        } else {
            ctx.fireExceptionCaught(cause);
        }
    }

    /**
     * Called once a {@link Http3HeadersFrame} is ready for this stream to process.
     *
     * @param ctx           the {@link ChannelHandlerContext} of this handler.
     * @param frame         the {@link Http3HeadersFrame} that was read
     * @throws Exception    thrown if an error happens during processing.
     */
    protected abstract void channelRead(ChannelHandlerContext ctx, Http3HeadersFrame frame) throws Exception;

    /**
     * Called once a {@link Http3DataFrame} is ready for this stream to process.
     *
     * @param ctx           the {@link ChannelHandlerContext} of this handler.
     * @param frame         the {@link Http3DataFrame} that was read
     * @throws Exception    thrown if an error happens during processing.
     */
    protected abstract void channelRead(ChannelHandlerContext ctx, Http3DataFrame frame) throws Exception;

    /**
     * Called once the input is closed and so no more inbound data is received on it.
     *
     * @param ctx           the {@link ChannelHandlerContext} of this handler.
     * @throws Exception    thrown if an error happens during processing.
     */
    protected abstract void channelInputClosed(ChannelHandlerContext ctx) throws Exception;

    /**
     * Called once a {@link Http3UnknownFrame} is ready for this stream to process. By default these frames are just
     * released and so dropped on the floor as stated in the RFC. That said you may want to override this method if
     * you use some custom frames which are not part of the main spec.
     *
     * @param ctx           the {@link ChannelHandlerContext} of this handler.
     * @param frame         the {@link Http3UnknownFrame} that was read
     */
    protected void channelRead(@SuppressWarnings("unused") ChannelHandlerContext ctx, Http3UnknownFrame frame) {
        frame.release();
    }

    /**
     * Called once a {@link QuicException} should be handled.
     *
     * @param ctx           the {@link ChannelHandlerContext} of this handler.
     * @param exception     the {@link QuicException} that caused the error.
     */
    protected void handleQuicException(@SuppressWarnings("unused") ChannelHandlerContext ctx, QuicException exception) {

Frequently Asked Questions

What is the Http3RequestStreamInboundHandler class?
Http3RequestStreamInboundHandler is a class in the netty codebase, defined in codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamInboundHandler.java.
Where is Http3RequestStreamInboundHandler defined?
Http3RequestStreamInboundHandler is defined in codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamInboundHandler.java at line 31.

Analyze Your Own Codebase

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

Try Supermodel Free