1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty5.handler.codec.dns;
17
18 import io.netty5.buffer.api.Buffer;
19 import io.netty5.channel.ChannelHandlerContext;
20 import io.netty5.handler.codec.LengthFieldBasedFrameDecoder;
21 import io.netty5.util.internal.UnstableApi;
22
23 import static java.util.Objects.requireNonNull;
24
25 @UnstableApi
26 public final class TcpDnsQueryDecoder extends LengthFieldBasedFrameDecoder {
27 private final DnsRecordDecoder decoder;
28
29
30
31
32 public TcpDnsQueryDecoder() {
33 this(DnsRecordDecoder.DEFAULT, 65535);
34 }
35
36
37
38
39 public TcpDnsQueryDecoder(DnsRecordDecoder decoder, int maxFrameLength) {
40 super(maxFrameLength, 0, 2, 0, 2);
41 this.decoder = requireNonNull(decoder, "decoder");
42 }
43
44 @Override
45 protected Object decode0(ChannelHandlerContext ctx, Buffer in) throws Exception {
46 Buffer frame = (Buffer) super.decode0(ctx, in);
47 if (frame == null) {
48 return null;
49 }
50
51 return DnsMessageUtil.decodeDnsQuery(decoder, ctx.bufferAllocator(), frame.split(), DefaultDnsQuery::new);
52 }
53 }