Home / Class/ Http2EmptyDataFrameListener Class — netty Architecture

Http2EmptyDataFrameListener Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  03c51870_f3be_7445_5544_6b0f3210decf["Http2EmptyDataFrameListener"]
  fafe6a13_4ec7_8f05_0ee8_9749f465ff0e["Http2EmptyDataFrameListener.java"]
  03c51870_f3be_7445_5544_6b0f3210decf -->|defined in| fafe6a13_4ec7_8f05_0ee8_9749f465ff0e
  7d9f516b_18e0_6393_89d5_7957e743234d["Http2EmptyDataFrameListener()"]
  03c51870_f3be_7445_5544_6b0f3210decf -->|method| 7d9f516b_18e0_6393_89d5_7957e743234d
  980dae73_1356_03ac_a545_834e26bc18cf["onDataRead()"]
  03c51870_f3be_7445_5544_6b0f3210decf -->|method| 980dae73_1356_03ac_a545_834e26bc18cf
  a8426984_393c_9cc6_ea7e_fe7e8c5af835["onHeadersRead()"]
  03c51870_f3be_7445_5544_6b0f3210decf -->|method| a8426984_393c_9cc6_ea7e_fe7e8c5af835

Relationship Graph

Source Code

codec-http2/src/main/java/io/netty/handler/codec/http2/Http2EmptyDataFrameListener.java lines 25–65

final class Http2EmptyDataFrameListener extends Http2FrameListenerDecorator {
    private final int maxConsecutiveEmptyFrames;

    private boolean violationDetected;
    private int emptyDataFrames;

    Http2EmptyDataFrameListener(Http2FrameListener listener, int maxConsecutiveEmptyFrames) {
        super(listener);
        this.maxConsecutiveEmptyFrames = ObjectUtil.checkPositive(
                maxConsecutiveEmptyFrames, "maxConsecutiveEmptyFrames");
    }

    @Override
    public int onDataRead(ChannelHandlerContext ctx, int streamId, ByteBuf data, int padding, boolean endOfStream)
            throws Http2Exception {
        if (endOfStream || data.isReadable()) {
            emptyDataFrames = 0;
        } else if (emptyDataFrames++ == maxConsecutiveEmptyFrames && !violationDetected) {
            violationDetected = true;
            throw Http2Exception.connectionError(Http2Error.ENHANCE_YOUR_CALM,
                    "Maximum number %d of empty data frames without end_of_stream flag received",
                    maxConsecutiveEmptyFrames);
        }

        return super.onDataRead(ctx, streamId, data, padding, endOfStream);
    }

    @Override
    public void onHeadersRead(ChannelHandlerContext ctx, int streamId, Http2Headers headers,
                              int padding, boolean endStream) throws Http2Exception {
        emptyDataFrames = 0;
        super.onHeadersRead(ctx, streamId, headers, padding, endStream);
    }

    @Override
    public void onHeadersRead(ChannelHandlerContext ctx, int streamId, Http2Headers headers, int streamDependency,
                              short weight, boolean exclusive, int padding, boolean endStream) throws Http2Exception {
        emptyDataFrames = 0;
        super.onHeadersRead(ctx, streamId, headers, streamDependency, weight, exclusive, padding, endStream);
    }
}

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free