1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.handler.codec.dns;
17
18 import io.netty.channel.ChannelHandler;
19 import io.netty.channel.ChannelHandlerContext;
20 import io.netty.channel.socket.DatagramPacket;
21 import io.netty.handler.codec.MessageToMessageDecoder;
22 import io.netty.util.internal.UnstableApi;
23
24 import java.util.List;
25
26 import static io.netty.util.internal.ObjectUtil.checkNotNull;
27
28
29
30
31 @UnstableApi
32 @ChannelHandler.Sharable
33 public class DatagramDnsQueryDecoder extends MessageToMessageDecoder<DatagramPacket> {
34
35 private final DnsRecordDecoder recordDecoder;
36
37
38
39
40 public DatagramDnsQueryDecoder() {
41 this(DnsRecordDecoder.DEFAULT);
42 }
43
44
45
46
47 public DatagramDnsQueryDecoder(DnsRecordDecoder recordDecoder) {
48 this.recordDecoder = checkNotNull(recordDecoder, "recordDecoder");
49 }
50
51 @Override
52 protected void decode(ChannelHandlerContext ctx, final DatagramPacket packet, List<Object> out) throws Exception {
53 DnsQuery query = DnsMessageUtil.decodeDnsQuery(recordDecoder, packet.content(),
54 new DnsMessageUtil.DnsQueryFactory() {
55 @Override
56 public DnsQuery newQuery(int id, DnsOpCode dnsOpCode) {
57 return new DatagramDnsQuery(packet.sender(), packet.recipient(), id, dnsOpCode);
58 }
59 });
60 out.add(query);
61 }
62 }