DnsQueryEncoder Class — netty Architecture
Architecture documentation for the DnsQueryEncoder class in DnsQueryEncoder.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD b9e6a586_6476_174d_8cdd_54cd21da84c5["DnsQueryEncoder"] ed44b390_46b9_c7cf_428e_e4df819f35b8["DnsQueryEncoder.java"] b9e6a586_6476_174d_8cdd_54cd21da84c5 -->|defined in| ed44b390_46b9_c7cf_428e_e4df819f35b8 e7cefaa8_a7b0_2ec2_74cb_af3e65ee4d8d["DnsQueryEncoder()"] b9e6a586_6476_174d_8cdd_54cd21da84c5 -->|method| e7cefaa8_a7b0_2ec2_74cb_af3e65ee4d8d 2d010e28_617e_c98f_22cf_5e8918601cac["encode()"] b9e6a586_6476_174d_8cdd_54cd21da84c5 -->|method| 2d010e28_617e_c98f_22cf_5e8918601cac f65660b9_02fb_3e0d_ed22_e883b60c8ee1["encodeHeader()"] b9e6a586_6476_174d_8cdd_54cd21da84c5 -->|method| f65660b9_02fb_3e0d_ed22_e883b60c8ee1 cc20eb8a_52af_2fbc_9587_fcec6c08add8["encodeQuestions()"] b9e6a586_6476_174d_8cdd_54cd21da84c5 -->|method| cc20eb8a_52af_2fbc_9587_fcec6c08add8 2a2410f5_53ac_6288_0398_ebbad7f3ba60["encodeRecords()"] b9e6a586_6476_174d_8cdd_54cd21da84c5 -->|method| 2a2410f5_53ac_6288_0398_ebbad7f3ba60
Relationship Graph
Source Code
codec-dns/src/main/java/io/netty/handler/codec/dns/DnsQueryEncoder.java lines 22–75
final class DnsQueryEncoder {
private final DnsRecordEncoder recordEncoder;
/**
* Creates a new encoder with the specified {@code recordEncoder}.
*/
DnsQueryEncoder(DnsRecordEncoder recordEncoder) {
this.recordEncoder = checkNotNull(recordEncoder, "recordEncoder");
}
/**
* Encodes the given {@link DnsQuery} into a {@link ByteBuf}.
*/
void encode(DnsQuery query, ByteBuf out) throws Exception {
encodeHeader(query, out);
encodeQuestions(query, out);
encodeRecords(query, DnsSection.ADDITIONAL, out);
}
/**
* Encodes the header that is always 12 bytes long.
*
* @param query the query header being encoded
* @param buf the buffer the encoded data should be written to
*/
private static void encodeHeader(DnsQuery query, ByteBuf buf) {
buf.writeShort(query.id());
int flags = 0;
flags |= (query.opCode().byteValue() & 0xFF) << 14;
if (query.isRecursionDesired()) {
flags |= 1 << 8;
}
buf.writeShort(flags);
buf.writeShort(query.count(DnsSection.QUESTION));
buf.writeShort(0); // answerCount
buf.writeShort(0); // authorityResourceCount
buf.writeShort(query.count(DnsSection.ADDITIONAL));
}
private void encodeQuestions(DnsQuery query, ByteBuf buf) throws Exception {
final int count = query.count(DnsSection.QUESTION);
for (int i = 0; i < count; i++) {
recordEncoder.encodeQuestion((DnsQuestion) query.recordAt(DnsSection.QUESTION, i), buf);
}
}
private void encodeRecords(DnsQuery query, DnsSection section, ByteBuf buf) throws Exception {
final int count = query.count(section);
for (int i = 0; i < count; i++) {
recordEncoder.encodeRecord(query.recordAt(section, i), buf);
}
}
}
Source
Frequently Asked Questions
What is the DnsQueryEncoder class?
DnsQueryEncoder is a class in the netty codebase, defined in codec-dns/src/main/java/io/netty/handler/codec/dns/DnsQueryEncoder.java.
Where is DnsQueryEncoder defined?
DnsQueryEncoder is defined in codec-dns/src/main/java/io/netty/handler/codec/dns/DnsQueryEncoder.java at line 22.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free