Home / Class/ DnsResolveContext Class — netty Architecture

DnsResolveContext Class — netty Architecture

Architecture documentation for the DnsResolveContext class in DnsResolveContext.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  3bc002ec_f54e_a55f_0b37_77eac88c60db["DnsResolveContext"]
  21f3aef4_24fe_7168_ea1d_94d7a3f45711["DnsResolveContext.java"]
  3bc002ec_f54e_a55f_0b37_77eac88c60db -->|defined in| 21f3aef4_24fe_7168_ea1d_94d7a3f45711
  1c654742_bcd7_508b_77cf_e829da7b7ba6["DnsResolveContext()"]
  3bc002ec_f54e_a55f_0b37_77eac88c60db -->|method| 1c654742_bcd7_508b_77cf_e829da7b7ba6
  3a42b2c4_9782_8138_2d86_4cde12e7c071["Channel()"]
  3bc002ec_f54e_a55f_0b37_77eac88c60db -->|method| 3a42b2c4_9782_8138_2d86_4cde12e7c071
  a3fff4fd_ba61_f849_f263_bbecd6bf23f1["DnsCache()"]
  3bc002ec_f54e_a55f_0b37_77eac88c60db -->|method| a3fff4fd_ba61_f849_f263_bbecd6bf23f1
  20d3117a_a2bc_00a8_435b_3a53811121ad["DnsCnameCache()"]
  3bc002ec_f54e_a55f_0b37_77eac88c60db -->|method| 20d3117a_a2bc_00a8_435b_3a53811121ad
  11fe6bf7_b193_96b2_71ce_07f7373771d8["AuthoritativeDnsServerCache()"]
  3bc002ec_f54e_a55f_0b37_77eac88c60db -->|method| 11fe6bf7_b193_96b2_71ce_07f7373771d8
  90a5361e_fe49_2802_e7a5_2b8a386acb5c["newResolverContext()"]
  3bc002ec_f54e_a55f_0b37_77eac88c60db -->|method| 90a5361e_fe49_2802_e7a5_2b8a386acb5c
  e7918842_b5ae_6915_3390_6d8c2426788d["T()"]
  3bc002ec_f54e_a55f_0b37_77eac88c60db -->|method| e7918842_b5ae_6915_3390_6d8c2426788d
  897b955b_8e11_6099_2d0f_344fd4d5386d["filterResults()"]
  3bc002ec_f54e_a55f_0b37_77eac88c60db -->|method| 897b955b_8e11_6099_2d0f_344fd4d5386d
  62ab1144_69c1_0204_37b8_4eea34d6eac3["isCompleteEarly()"]
  3bc002ec_f54e_a55f_0b37_77eac88c60db -->|method| 62ab1144_69c1_0204_37b8_4eea34d6eac3
  ef806d7b_af94_59ce_ffc1_c767faa5b6f5["isDuplicateAllowed()"]
  3bc002ec_f54e_a55f_0b37_77eac88c60db -->|method| ef806d7b_af94_59ce_ffc1_c767faa5b6f5
  e1a10468_2ab8_17c7_5dfe_66d356b0d510["cache()"]
  3bc002ec_f54e_a55f_0b37_77eac88c60db -->|method| e1a10468_2ab8_17c7_5dfe_66d356b0d510
  19225515_ce5b_59bc_9042_d989b77e8911["resolve()"]
  3bc002ec_f54e_a55f_0b37_77eac88c60db -->|method| 19225515_ce5b_59bc_9042_d989b77e8911
  5e50dade_7679_6bfb_4ac3_1314c4c0e2dc["hasNDots()"]
  3bc002ec_f54e_a55f_0b37_77eac88c60db -->|method| 5e50dade_7679_6bfb_4ac3_1314c4c0e2dc

Relationship Graph

Source Code

resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java lines 69–1481

abstract class DnsResolveContext<T> {
    private static final InternalLogger logger = InternalLoggerFactory.getInstance(DnsResolveContext.class);
    private static final String PROP_TRY_FINAL_CNAME_ON_ADDRESS_LOOKUPS =
            "io.netty.resolver.dns.tryCnameOnAddressLookups";
    static boolean TRY_FINAL_CNAME_ON_ADDRESS_LOOKUPS;

    static {
        TRY_FINAL_CNAME_ON_ADDRESS_LOOKUPS =
                SystemPropertyUtil.getBoolean(PROP_TRY_FINAL_CNAME_ON_ADDRESS_LOOKUPS, false);

        if (logger.isDebugEnabled()) {
            logger.debug("-D{}: {}", PROP_TRY_FINAL_CNAME_ON_ADDRESS_LOOKUPS, TRY_FINAL_CNAME_ON_ADDRESS_LOOKUPS);
        }
    }

    private static final RuntimeException NXDOMAIN_QUERY_FAILED_EXCEPTION =
            DnsResolveContextException.newStatic("No answer found and NXDOMAIN response code returned",
            DnsResolveContext.class, "onResponse(..)");
    private static final RuntimeException CNAME_NOT_FOUND_QUERY_FAILED_EXCEPTION =
            DnsResolveContextException.newStatic("No matching CNAME record found",
            DnsResolveContext.class, "onResponseCNAME(..)");
    private static final RuntimeException NO_MATCHING_RECORD_QUERY_FAILED_EXCEPTION =
            DnsResolveContextException.newStatic("No matching record type found",
            DnsResolveContext.class, "onResponseAorAAAA(..)");
    private static final RuntimeException UNRECOGNIZED_TYPE_QUERY_FAILED_EXCEPTION =
            DnsResolveContextException.newStatic("Response type was unrecognized",
            DnsResolveContext.class, "onResponse(..)");
    private static final RuntimeException NAME_SERVERS_EXHAUSTED_EXCEPTION =
            DnsResolveContextException.newStatic("No name servers returned an answer",
            DnsResolveContext.class, "tryToFinishResolve(..)");
    private static final RuntimeException SERVFAIL_QUERY_FAILED_EXCEPTION =
            DnsErrorCauseException.newStatic("Query failed with SERVFAIL", SERVFAIL,
                    DnsResolveContext.class, "onResponse(..)");
    private static final RuntimeException NXDOMAIN_CAUSE_QUERY_FAILED_EXCEPTION =
            DnsErrorCauseException.newStatic("Query failed with NXDOMAIN", NXDOMAIN,
                    DnsResolveContext.class, "onResponse(..)");

    final DnsNameResolver parent;
    private final Channel channel;
    private final Promise<?> originalPromise;
    private final DnsServerAddressStream nameServerAddrs;
    private final String hostname;
    private final int dnsClass;
    private final DnsRecordType[] expectedTypes;
    final DnsRecord[] additionals;

    private final Set<Future<AddressedEnvelope<DnsResponse, InetSocketAddress>>> queriesInProgress =
            Collections.newSetFromMap(
                    new IdentityHashMap<Future<AddressedEnvelope<DnsResponse, InetSocketAddress>>, Boolean>());

    private List<T> finalResult;
    private int allowedQueries;
    private boolean triedCNAME;
    private boolean completeEarly;

    DnsResolveContext(DnsNameResolver parent, Channel channel,
                      Promise<?> originalPromise, String hostname, int dnsClass, DnsRecordType[] expectedTypes,
                      DnsRecord[] additionals, DnsServerAddressStream nameServerAddrs, int allowedQueries) {
        assert expectedTypes.length > 0;

        this.parent = parent;
        this.channel = channel;
        this.originalPromise = originalPromise;
        this.hostname = hostname;
        this.dnsClass = dnsClass;
        this.expectedTypes = expectedTypes;
        this.additionals = additionals;

        this.nameServerAddrs = ObjectUtil.checkNotNull(nameServerAddrs, "nameServerAddrs");
        this.allowedQueries = allowedQueries;
    }

    static final class DnsResolveContextException extends RuntimeException {

        private static final long serialVersionUID = 1209303419266433003L;

        private DnsResolveContextException(String message, boolean shared) {
            super(message, null, false, true);
            assert shared;
        }

Frequently Asked Questions

What is the DnsResolveContext class?
DnsResolveContext is a class in the netty codebase, defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java.
Where is DnsResolveContext defined?
DnsResolveContext is defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java at line 69.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free