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.ChannelOutboundHandlerAdapter;
20 import io.netty.channel.ChannelPromise;
21 import io.netty.util.internal.ObjectUtil;
22
23 import static io.netty.handler.codec.http3.Http3FrameValidationUtils.frameTypeUnexpected;
24 import static io.netty.handler.codec.http3.Http3FrameValidationUtils.validateFrameWritten;
25
26 class Http3FrameTypeOutboundValidationHandler<T extends Http3Frame> extends ChannelOutboundHandlerAdapter {
27
28 private final Class<T> frameType;
29
30 Http3FrameTypeOutboundValidationHandler(Class<T> frameType) {
31 this.frameType = ObjectUtil.checkNotNull(frameType, "frameType");
32 }
33
34 @Override
35 public final void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) {
36 T frame = validateFrameWritten(frameType, msg);
37 if (frame != null) {
38 write(ctx, frame, promise);
39 } else {
40 writeFrameDiscarded(msg, promise);
41 }
42 }
43
44 void write(ChannelHandlerContext ctx, T msg, ChannelPromise promise) {
45 ctx.write(msg, promise);
46 }
47
48 void writeFrameDiscarded(Object discardedFrame, ChannelPromise promise) {
49 frameTypeUnexpected(promise, discardedFrame);
50 }
51 }