query() — netty Function Reference
Architecture documentation for the query() function in DnsResolveContext.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 07f53a31_718c_c4a3_04b0_19d21f5a6af4["query()"] 3bc002ec_f54e_a55f_0b37_77eac88c60db["DnsResolveContext"] 07f53a31_718c_c4a3_04b0_19d21f5a6af4 -->|defined in| 3bc002ec_f54e_a55f_0b37_77eac88c60db 9f561f45_6801_ce1e_316a_a956c08ce604["internalResolve()"] 9f561f45_6801_ce1e_316a_a956c08ce604 -->|calls| 07f53a31_718c_c4a3_04b0_19d21f5a6af4 a0a3ef5b_50ac_f197_edc6_5c2f3f1c03c1["DnsServerAddressStream()"] a0a3ef5b_50ac_f197_edc6_5c2f3f1c03c1 -->|calls| 07f53a31_718c_c4a3_04b0_19d21f5a6af4 804ea022_5b6c_6eb0_3048_d20c3d4093fb["queryUnresolvedNameServer()"] 804ea022_5b6c_6eb0_3048_d20c3d4093fb -->|calls| 07f53a31_718c_c4a3_04b0_19d21f5a6af4 6b22df1c_91b5_21bf_29f9_518f692074d4["onResponse()"] 6b22df1c_91b5_21bf_29f9_518f692074d4 -->|calls| 07f53a31_718c_c4a3_04b0_19d21f5a6af4 65c57ffd_71d8_8f62_ab38_e8ff772695a7["handleRedirect()"] 65c57ffd_71d8_8f62_ab38_e8ff772695a7 -->|calls| 07f53a31_718c_c4a3_04b0_19d21f5a6af4 b3885856_e061_0f3a_54d9_f9abe9613324["tryToFinishResolve()"] b3885856_e061_0f3a_54d9_f9abe9613324 -->|calls| 07f53a31_718c_c4a3_04b0_19d21f5a6af4 9887dab6_1e3b_0204_7d07_03b65a1c5e4d["followCname()"] 9887dab6_1e3b_0204_7d07_03b65a1c5e4d -->|calls| 07f53a31_718c_c4a3_04b0_19d21f5a6af4 b3885856_e061_0f3a_54d9_f9abe9613324["tryToFinishResolve()"] 07f53a31_718c_c4a3_04b0_19d21f5a6af4 -->|calls| b3885856_e061_0f3a_54d9_f9abe9613324 804ea022_5b6c_6eb0_3048_d20c3d4093fb["queryUnresolvedNameServer()"] 07f53a31_718c_c4a3_04b0_19d21f5a6af4 -->|calls| 804ea022_5b6c_6eb0_3048_d20c3d4093fb 161fe130_19c1_016b_ea22_8d91937c6452["add()"] 07f53a31_718c_c4a3_04b0_19d21f5a6af4 -->|calls| 161fe130_19c1_016b_ea22_8d91937c6452 6b22df1c_91b5_21bf_29f9_518f692074d4["onResponse()"] 07f53a31_718c_c4a3_04b0_19d21f5a6af4 -->|calls| 6b22df1c_91b5_21bf_29f9_518f692074d4 da77f527_215a_7164_ca37_07a76673c344["size()"] 07f53a31_718c_c4a3_04b0_19d21f5a6af4 -->|calls| da77f527_215a_7164_ca37_07a76673c344 style 07f53a31_718c_c4a3_04b0_19d21f5a6af4 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java lines 434–521
private void query(final DnsServerAddressStream nameServerAddrStream,
final int nameServerAddrStreamIndex,
final DnsQuestion question,
final DnsQueryLifecycleObserver queryLifecycleObserver,
final boolean flush,
final Promise<List<T>> promise,
final Throwable cause) {
if (completeEarly || nameServerAddrStreamIndex >= nameServerAddrStream.size() ||
allowedQueries == 0 || originalPromise.isCancelled() || promise.isCancelled()) {
tryToFinishResolve(nameServerAddrStream, nameServerAddrStreamIndex, question, queryLifecycleObserver,
promise, cause);
return;
}
--allowedQueries;
final InetSocketAddress nameServerAddr = nameServerAddrStream.next();
if (nameServerAddr.isUnresolved()) {
queryUnresolvedNameServer(nameServerAddr, nameServerAddrStream, nameServerAddrStreamIndex, question,
queryLifecycleObserver, promise, cause);
return;
}
final Promise<AddressedEnvelope<? extends DnsResponse, InetSocketAddress>> queryPromise =
channel.eventLoop().newPromise();
final long queryStartTimeNanos;
final boolean isFeedbackAddressStream;
if (nameServerAddrStream instanceof DnsServerResponseFeedbackAddressStream) {
queryStartTimeNanos = System.nanoTime();
isFeedbackAddressStream = true;
} else {
queryStartTimeNanos = -1;
isFeedbackAddressStream = false;
}
final Future<AddressedEnvelope<DnsResponse, InetSocketAddress>> f =
parent.doQuery(channel, nameServerAddr, question,
queryLifecycleObserver, additionals, flush, queryPromise);
queriesInProgress.add(f);
f.addListener((FutureListener<AddressedEnvelope<DnsResponse, InetSocketAddress>>) future -> {
queriesInProgress.remove(future);
if (promise.isDone() || future.isCancelled()) {
queryLifecycleObserver.queryCancelled(allowedQueries);
// Check if we need to release the envelope itself. If the query was cancelled the getNow() will
// return null as well as the Future will be failed with a CancellationException.
AddressedEnvelope<DnsResponse, InetSocketAddress> result = future.getNow();
if (result != null) {
result.release();
}
return;
}
final Throwable queryCause = future.cause();
try {
if (queryCause == null) {
if (isFeedbackAddressStream) {
final DnsServerResponseFeedbackAddressStream feedbackNameServerAddrStream =
(DnsServerResponseFeedbackAddressStream) nameServerAddrStream;
feedbackNameServerAddrStream.feedbackSuccess(nameServerAddr,
System.nanoTime() - queryStartTimeNanos);
}
onResponse(nameServerAddrStream, nameServerAddrStreamIndex, question, future.getNow(),
queryLifecycleObserver, promise);
} else {
// Server did not respond or I/O error occurred; try again.
if (isFeedbackAddressStream) {
final DnsServerResponseFeedbackAddressStream feedbackNameServerAddrStream =
(DnsServerResponseFeedbackAddressStream) nameServerAddrStream;
feedbackNameServerAddrStream.feedbackFailure(nameServerAddr, queryCause,
System.nanoTime() - queryStartTimeNanos);
}
queryLifecycleObserver.queryFailed(queryCause);
query(nameServerAddrStream, nameServerAddrStreamIndex + 1, question,
newDnsQueryLifecycleObserver(question), true, promise, queryCause);
}
} finally {
tryToFinishResolve(nameServerAddrStream, nameServerAddrStreamIndex, question,
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does query() do?
query() is a function in the netty codebase, defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java.
Where is query() defined?
query() is defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java at line 434.
What does query() call?
query() calls 5 function(s): add, onResponse, queryUnresolvedNameServer, size, tryToFinishResolve.
What calls query()?
query() is called by 7 function(s): DnsServerAddressStream, followCname, handleRedirect, internalResolve, onResponse, queryUnresolvedNameServer, tryToFinishResolve.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free