1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.handler.codec.http3;
17
18 import io.netty.channel.ChannelHandlerContext;
19 import io.netty.channel.ChannelInboundHandlerAdapter;
20 import io.netty.util.internal.ObjectUtil;
21
22 import static io.netty.handler.codec.http3.Http3FrameValidationUtils.frameTypeUnexpected;
23 import static io.netty.handler.codec.http3.Http3FrameValidationUtils.validateFrameRead;
24
25 class Http3FrameTypeInboundValidationHandler<T extends Http3Frame> extends ChannelInboundHandlerAdapter {
26
27 protected final Class<T> frameType;
28
29 Http3FrameTypeInboundValidationHandler(Class<T> frameType) {
30 this.frameType = ObjectUtil.checkNotNull(frameType, "frameType");
31 }
32
33 @Override
34 public final void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
35 final T frame = validateFrameRead(frameType, msg);
36 if (frame != null) {
37 channelRead(ctx, frame);
38 } else {
39 readFrameDiscarded(ctx, msg);
40 }
41 }
42
43 void channelRead(ChannelHandlerContext ctx, T frame) throws Exception {
44 ctx.fireChannelRead(frame);
45 }
46
47 void readFrameDiscarded(ChannelHandlerContext ctx, Object discardedFrame) {
48 frameTypeUnexpected(ctx, discardedFrame);
49 }
50 }