1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.testsuite_jpms.main;
17
18 import io.netty.buffer.ByteBuf;
19 import io.netty.buffer.Unpooled;
20 import io.netty.channel.ChannelHandlerContext;
21 import io.netty.handler.codec.http3.DefaultHttp3DataFrame;
22 import io.netty.handler.codec.http3.DefaultHttp3HeadersFrame;
23 import io.netty.handler.codec.http3.Http3DataFrame;
24 import io.netty.handler.codec.http3.Http3HeadersFrame;
25 import io.netty.handler.codec.http3.Http3RequestStreamInboundHandler;
26 import io.netty.handler.codec.quic.QuicStreamChannel;
27 import io.netty.util.ReferenceCountUtil;
28
29 import java.nio.charset.StandardCharsets;
30
31 public class Http3HelloWorldServerHandler extends Http3RequestStreamInboundHandler {
32
33 @Override
34 protected void channelRead(ChannelHandlerContext ctx, Http3HeadersFrame frame) {
35 ReferenceCountUtil.release(frame);
36 }
37
38 @Override
39 protected void channelRead(ChannelHandlerContext ctx, Http3DataFrame frame) {
40 ReferenceCountUtil.release(frame);
41 }
42
43 @Override
44 protected void channelInputClosed(ChannelHandlerContext ctx) {
45
46 String hello = HttpHelloWorldServer.content(ctx);
47 ByteBuf data = Unpooled.copiedBuffer(hello, StandardCharsets.UTF_8);
48
49 Http3HeadersFrame headersFrame = new DefaultHttp3HeadersFrame();
50 headersFrame.headers().status("200");
51 headersFrame.headers().add("server", "netty");
52 headersFrame.headers().addInt("content-length", data.readableBytes());
53 ctx.write(headersFrame);
54 ctx.writeAndFlush(new DefaultHttp3DataFrame(data))
55 .addListener(QuicStreamChannel.SHUTDOWN_OUTPUT);
56 }
57 }