diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2DataFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2DataFrame.java index 742f3f187d7..0e77e5304fc 100644 --- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2DataFrame.java +++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2DataFrame.java @@ -87,6 +87,11 @@ public DefaultHttp2DataFrame stream(Http2FrameStream stream) { return this; } + @Override + public byte frameType() { + return Http2FrameTypes.DATA; + } + @Override public String name() { return "DATA"; diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2GoAwayFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2GoAwayFrame.java index 8940d06fb60..aa9b1c2c2cd 100644 --- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2GoAwayFrame.java +++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2GoAwayFrame.java @@ -83,6 +83,11 @@ public DefaultHttp2GoAwayFrame(long errorCode, ByteBuf content) { this.lastStreamId = lastStreamId; } + @Override + public byte frameType() { + return Http2FrameTypes.GO_AWAY; + } + @Override public String name() { return "GOAWAY"; diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2HeadersFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2HeadersFrame.java index c06d8ad959a..ff52e8fc794 100644 --- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2HeadersFrame.java +++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2HeadersFrame.java @@ -69,6 +69,11 @@ public DefaultHttp2HeadersFrame stream(Http2FrameStream stream) { return this; } + @Override + public byte frameType() { + return Http2FrameTypes.HEADERS; + } + @Override public String name() { return "HEADERS"; diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PingFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PingFrame.java index f102bd1da30..70633754bd5 100644 --- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PingFrame.java +++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PingFrame.java @@ -42,6 +42,11 @@ public boolean ack() { return ack; } + @Override + public byte frameType() { + return Http2FrameTypes.PING; + } + @Override public String name() { return "PING"; diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PriorityFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PriorityFrame.java index 5e073d56af6..6622d069d2d 100644 --- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PriorityFrame.java +++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PriorityFrame.java @@ -54,6 +54,11 @@ public DefaultHttp2PriorityFrame stream(Http2FrameStream stream) { return this; } + @Override + public byte frameType() { + return Http2FrameTypes.PRIORITY; + } + @Override public String name() { return "PRIORITY_FRAME"; diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PushPromiseFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PushPromiseFrame.java index f9fd9871093..8911119e540 100644 --- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PushPromiseFrame.java +++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PushPromiseFrame.java @@ -84,6 +84,11 @@ public Http2FrameStream stream() { return streamFrame; } + @Override + public byte frameType() { + return Http2FrameTypes.PUSH_PROMISE; + } + @Override public String name() { return "PUSH_PROMISE_FRAME"; diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2ResetFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2ResetFrame.java index ddc1b22bb59..a2af71e759b 100644 --- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2ResetFrame.java +++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2ResetFrame.java @@ -52,6 +52,11 @@ public DefaultHttp2ResetFrame stream(Http2FrameStream stream) { return this; } + @Override + public byte frameType() { + return Http2FrameTypes.RST_STREAM; + } + @Override public String name() { return "RST_STREAM"; diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2SettingsAckFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2SettingsAckFrame.java index ea1c9ba9002..def1a3db771 100644 --- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2SettingsAckFrame.java +++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2SettingsAckFrame.java @@ -21,6 +21,12 @@ * The default {@link Http2SettingsAckFrame} implementation. */ final class DefaultHttp2SettingsAckFrame implements Http2SettingsAckFrame { + + @Override + public byte frameType() { + return Http2FrameTypes.SETTINGS; + } + @Override public String name() { return "SETTINGS(ACK)"; diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2SettingsFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2SettingsFrame.java index 565c28edae7..4487f3d2ab6 100644 --- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2SettingsFrame.java +++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2SettingsFrame.java @@ -37,6 +37,11 @@ public Http2Settings settings() { return settings; } + @Override + public byte frameType() { + return Http2FrameTypes.SETTINGS; + } + @Override public String name() { return "SETTINGS"; diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2WindowUpdateFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2WindowUpdateFrame.java index 1c98dd471c1..ed7ad713e7b 100644 --- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2WindowUpdateFrame.java +++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2WindowUpdateFrame.java @@ -36,6 +36,11 @@ public DefaultHttp2WindowUpdateFrame stream(Http2FrameStream stream) { return this; } + @Override + public byte frameType() { + return Http2FrameTypes.WINDOW_UPDATE; + } + @Override public String name() { return "WINDOW_UPDATE"; diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2Frame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2Frame.java index 799edaf7b78..57ae80cfdca 100644 --- a/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2Frame.java +++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2Frame.java @@ -21,6 +21,11 @@ @UnstableApi public interface Http2Frame { + /** + * Returns the type of the HTTP/2 frame e.g. DATA, GOAWAY, etc. + */ + byte frameType(); + /** * Returns the name of the HTTP/2 frame e.g. DATA, GOAWAY, etc. */ diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2UnknownFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2UnknownFrame.java index 9ce1ecdd631..9f79b526011 100644 --- a/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2UnknownFrame.java +++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2UnknownFrame.java @@ -28,6 +28,7 @@ public interface Http2UnknownFrame extends Http2StreamFrame, ByteBufHolder { @Override Http2UnknownFrame stream(Http2FrameStream stream); + @Override byte frameType(); Http2Flags flags(); diff --git a/codec-http2/src/test/java/io/netty/handler/codec/http2/Http2FrameCodecTest.java b/codec-http2/src/test/java/io/netty/handler/codec/http2/Http2FrameCodecTest.java index 619b1d9903b..2e88b5f3316 100644 --- a/codec-http2/src/test/java/io/netty/handler/codec/http2/Http2FrameCodecTest.java +++ b/codec-http2/src/test/java/io/netty/handler/codec/http2/Http2FrameCodecTest.java @@ -352,6 +352,11 @@ public void receiveGoaway() throws Exception { @Test public void unknownFrameTypeShouldThrowAndBeReleased() throws Exception { class UnknownHttp2Frame extends AbstractReferenceCounted implements Http2Frame { + @Override + public byte frameType() { + return 0xA; + } + @Override public String name() { return "UNKNOWN"; diff --git a/pom.xml b/pom.xml index c4f2279349c..e621d1d9d24 100644 --- a/pom.xml +++ b/pom.xml @@ -1359,6 +1359,12 @@ method io.netty.handler.codec.http2.Http2ConnectionHandlerBuilder io.netty.handler.codec.http2.Http2ConnectionHandlerBuilder::decoderEnforceMaxRstFramesPerWindow(int, int) Acceptable incompatibility for required change, because the method was not previously exposed; protected visiblity in super-class, not made public in final sub-class until now + + true + java.method.addedToInterface + method byte io.netty.handler.codec.http2.Http2Frame::frameType() + Acceptable incompatibility for required change +