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.ChannelInitializer;
19 import io.netty.channel.ChannelPipeline;
20 import io.netty.handler.codec.quic.QuicStreamChannel;
21 import io.netty.util.internal.StringUtil;
22
23
24
25
26
27 public abstract class Http3RequestStreamInitializer extends ChannelInitializer<QuicStreamChannel> {
28
29 @Override
30 protected final void initChannel(QuicStreamChannel ch) {
31 ChannelPipeline pipeline = ch.pipeline();
32 Http3ConnectionHandler connectionHandler = ch.parent().pipeline().get(Http3ConnectionHandler.class);
33 if (connectionHandler == null) {
34 throw new IllegalStateException("Couldn't obtain the " +
35 StringUtil.simpleClassName(Http3ConnectionHandler.class) + " of the parent Channel");
36 }
37
38 Http3RequestStreamEncodeStateValidator encodeStateValidator = new Http3RequestStreamEncodeStateValidator();
39 Http3RequestStreamDecodeStateValidator decodeStateValidator = new Http3RequestStreamDecodeStateValidator();
40
41
42 pipeline.addLast(connectionHandler.newCodec(encodeStateValidator, decodeStateValidator));
43
44 pipeline.addLast(encodeStateValidator);
45 pipeline.addLast(decodeStateValidator);
46 pipeline.addLast(connectionHandler.newRequestStreamValidationHandler(ch, encodeStateValidator,
47 decodeStateValidator));
48 initRequestStream(ch);
49 }
50
51
52
53
54
55
56 protected abstract void initRequestStream(QuicStreamChannel ch);
57 }