DnsQueryContext Class — netty Architecture
Architecture documentation for the DnsQueryContext class in DnsQueryContext.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 360b8eed_0666_8e3d_9331_e795bb312381["DnsQueryContext"] cb1d9388_7b83_b134_ea61_865801958fcf["DnsQueryContext.java"] 360b8eed_0666_8e3d_9331_e795bb312381 -->|defined in| cb1d9388_7b83_b134_ea61_865801958fcf be3000c7_6102_7cd7_e0aa_fedd49a8e5a8["DnsQueryContext()"] 360b8eed_0666_8e3d_9331_e795bb312381 -->|method| be3000c7_6102_7cd7_e0aa_fedd49a8e5a8 5b521f80_75c3_e8d7_5d14_477d64235fee["hasOptRecord()"] 360b8eed_0666_8e3d_9331_e795bb312381 -->|method| 5b521f80_75c3_e8d7_5d14_477d64235fee 74bccd11_01b5_da96_3a42_7c9f607f3a24["isDone()"] 360b8eed_0666_8e3d_9331_e795bb312381 -->|method| 74bccd11_01b5_da96_3a42_7c9f607f3a24 59048201_ab1c_e65a_e051_081d0cdc8dab["DnsQuestion()"] 360b8eed_0666_8e3d_9331_e795bb312381 -->|method| 59048201_ab1c_e65a_e051_081d0cdc8dab b6b09ba0_9205_b433_4d84_8c5f2fc77391["DnsQuery()"] 360b8eed_0666_8e3d_9331_e795bb312381 -->|method| b6b09ba0_9205_b433_4d84_8c5f2fc77391 8fa5e7bd_4d88_7f31_94aa_c7cdaf35a08e["String()"] 360b8eed_0666_8e3d_9331_e795bb312381 -->|method| 8fa5e7bd_4d88_7f31_94aa_c7cdaf35a08e d553b80a_9410_aa58_ac6c_ad8bcdf2e222["writeQuery()"] 360b8eed_0666_8e3d_9331_e795bb312381 -->|method| d553b80a_9410_aa58_ac6c_ad8bcdf2e222 83864166_f1ac_4045_c639_0eaffca1b560["removeFromContextManager()"] 360b8eed_0666_8e3d_9331_e795bb312381 -->|method| 83864166_f1ac_4045_c639_0eaffca1b560 6f692862_9d69_de7f_1c52_b61a73cddf20["ChannelFuture()"] 360b8eed_0666_8e3d_9331_e795bb312381 -->|method| 6f692862_9d69_de7f_1c52_b61a73cddf20 02e54375_a4b8_ba90_af41_190cf641d5e4["onQueryWriteCompletion()"] 360b8eed_0666_8e3d_9331_e795bb312381 -->|method| 02e54375_a4b8_ba90_af41_190cf641d5e4 ff2b708f_f879_8705_1346_618909272134["finishSuccess()"] 360b8eed_0666_8e3d_9331_e795bb312381 -->|method| ff2b708f_f879_8705_1346_618909272134 15b8d7e2_1c7e_b2d0_cb57_de6cae85f5f0["trySuccess()"] 360b8eed_0666_8e3d_9331_e795bb312381 -->|method| 15b8d7e2_1c7e_b2d0_cb57_de6cae85f5f0 c1b3ef8a_d203_e5e3_4c2f_67fdad9bbd92["finishFailure()"] 360b8eed_0666_8e3d_9331_e795bb312381 -->|method| c1b3ef8a_d203_e5e3_4c2f_67fdad9bbd92
Relationship Graph
Source Code
resolver-dns/src/main/java/io/netty/resolver/dns/DnsQueryContext.java lines 51–549
abstract class DnsQueryContext {
private static final InternalLogger logger = InternalLoggerFactory.getInstance(DnsQueryContext.class);
private static final long ID_REUSE_ON_TIMEOUT_DELAY_MILLIS;
static {
ID_REUSE_ON_TIMEOUT_DELAY_MILLIS =
SystemPropertyUtil.getLong("io.netty.resolver.dns.idReuseOnTimeoutDelayMillis", 10000);
logger.debug("-Dio.netty.resolver.dns.idReuseOnTimeoutDelayMillis: {}", ID_REUSE_ON_TIMEOUT_DELAY_MILLIS);
}
private static final TcpDnsQueryEncoder TCP_ENCODER = new TcpDnsQueryEncoder();
private final Channel channel;
private final InetSocketAddress nameServerAddr;
private final DnsQueryContextManager queryContextManager;
private final DnsQueryLifecycleObserver queryLifecycleObserver;
private final Promise<AddressedEnvelope<DnsResponse, InetSocketAddress>> promise;
private final DnsQuestion question;
private final DnsRecord[] additionals;
private final DnsRecord optResource;
private final boolean recursionDesired;
private final Bootstrap socketBootstrap;
private final boolean retryWithTcpOnTimeout;
private final long queryTimeoutMillis;
private volatile Future<?> timeoutFuture;
private int id = Integer.MIN_VALUE;
DnsQueryContext(Channel channel,
InetSocketAddress nameServerAddr,
DnsQueryContextManager queryContextManager,
DnsQueryLifecycleObserver queryLifecycleObserver,
int maxPayLoadSize,
boolean recursionDesired,
long queryTimeoutMillis,
DnsQuestion question,
DnsRecord[] additionals,
Promise<AddressedEnvelope<DnsResponse, InetSocketAddress>> promise,
Bootstrap socketBootstrap,
boolean retryWithTcpOnTimeout) {
this.channel = checkNotNull(channel, "channel");
this.queryContextManager = checkNotNull(queryContextManager, "queryContextManager");
this.queryLifecycleObserver = checkNotNull(queryLifecycleObserver, "queryLifecycleObserver");
this.nameServerAddr = checkNotNull(nameServerAddr, "nameServerAddr");
this.question = checkNotNull(question, "question");
this.additionals = checkNotNull(additionals, "additionals");
this.promise = checkNotNull(promise, "promise");
this.recursionDesired = recursionDesired;
this.queryTimeoutMillis = queryTimeoutMillis;
this.socketBootstrap = socketBootstrap;
this.retryWithTcpOnTimeout = retryWithTcpOnTimeout;
if (maxPayLoadSize > 0 &&
// Only add the extra OPT record if there is not already one. This is required as only one is allowed
// as per RFC:
// - https://datatracker.ietf.org/doc/html/rfc6891#section-6.1.1
!hasOptRecord(additionals)) {
optResource = new AbstractDnsOptPseudoRrRecord(maxPayLoadSize, 0, 0) {
// We may want to remove this in the future and let the user just specify the opt record in the query.
};
} else {
optResource = null;
}
}
private static boolean hasOptRecord(DnsRecord[] additionals) {
if (additionals != null && additionals.length > 0) {
for (DnsRecord additional: additionals) {
if (additional.type() == DnsRecordType.OPT) {
return true;
}
}
}
return false;
}
Source
Frequently Asked Questions
What is the DnsQueryContext class?
DnsQueryContext is a class in the netty codebase, defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsQueryContext.java.
Where is DnsQueryContext defined?
DnsQueryContext is defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsQueryContext.java at line 51.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free