Home / Class/ DnsNameResolver Class — netty Architecture

DnsNameResolver Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  a8faea52_3f45_7b36_4918_3dfb9bd6ee9b["DnsNameResolver"]
  70b10ccf_a76d_33ba_22ef_90a5a10e8ac3["DnsNameResolver.java"]
  a8faea52_3f45_7b36_4918_3dfb9bd6ee9b -->|defined in| 70b10ccf_a76d_33ba_22ef_90a5a10e8ac3
  866f5928_cd37_bab3_62c2_dcfee1b1b19d["anyInterfaceSupportsIpV6()"]
  a8faea52_3f45_7b36_4918_3dfb9bd6ee9b -->|method| 866f5928_cd37_bab3_62c2_dcfee1b1b19d
  38db9f3f_96ec_3af4_6653_4a388473f37b["getSearchDomainsHack()"]
  a8faea52_3f45_7b36_4918_3dfb9bd6ee9b -->|method| 38db9f3f_96ec_3af4_6653_4a388473f37b
  c1670091_ddb3_25bd_6aff_0a7ca67e48f2["DnsNameResolver()"]
  a8faea52_3f45_7b36_4918_3dfb9bd6ee9b -->|method| c1670091_ddb3_25bd_6aff_0a7ca67e48f2
  9e06b193_8077_165c_2202_d8f715cec8db["DnsResolveChannelProvider()"]
  a8faea52_3f45_7b36_4918_3dfb9bd6ee9b -->|method| 9e06b193_8077_165c_2202_d8f715cec8db
  cecb7c2c_e16b_b383_cc5b_73a7ed0f4195["SocketProtocolFamily()"]
  a8faea52_3f45_7b36_4918_3dfb9bd6ee9b -->|method| cecb7c2c_e16b_b383_cc5b_73a7ed0f4195
  628761bf_68c3_4c81_f5db_9cb3912eb5ed["InetSocketAddress()"]
  a8faea52_3f45_7b36_4918_3dfb9bd6ee9b -->|method| 628761bf_68c3_4c81_f5db_9cb3912eb5ed
  dac9edad_f382_23f9_726e_0168a0e36fdd["DnsQueryLifecycleObserverFactory()"]
  a8faea52_3f45_7b36_4918_3dfb9bd6ee9b -->|method| dac9edad_f382_23f9_726e_0168a0e36fdd
  4e79d979_2640_8649_6983_b47e7cf0f7d9["DnsServerAddressStream()"]
  a8faea52_3f45_7b36_4918_3dfb9bd6ee9b -->|method| 4e79d979_2640_8649_6983_b47e7cf0f7d9
  22a7b4e6_b72e_3be7_fbce_ae7954443757["DnsCache()"]
  a8faea52_3f45_7b36_4918_3dfb9bd6ee9b -->|method| 22a7b4e6_b72e_3be7_fbce_ae7954443757
  3825abc2_c7fb_cf7d_c013_c0dd5ac95923["DnsCnameCache()"]
  a8faea52_3f45_7b36_4918_3dfb9bd6ee9b -->|method| 3825abc2_c7fb_cf7d_c013_c0dd5ac95923
  001d47eb_4e9b_f05d_d999_5b061a1edf5d["AuthoritativeDnsServerCache()"]
  a8faea52_3f45_7b36_4918_3dfb9bd6ee9b -->|method| 001d47eb_4e9b_f05d_d999_5b061a1edf5d
  8c96e691_9819_2021_ebee_8971b544baf3["queryTimeoutMillis()"]
  a8faea52_3f45_7b36_4918_3dfb9bd6ee9b -->|method| 8c96e691_9819_2021_ebee_8971b544baf3
  c3114c09_35dc_e44e_95c8_9ce578cfe92a["ResolvedAddressTypes()"]
  a8faea52_3f45_7b36_4918_3dfb9bd6ee9b -->|method| c3114c09_35dc_e44e_95c8_9ce578cfe92a

Relationship Graph

Source Code

resolver-dns/src/main/java/io/netty/resolver/dns/DnsNameResolver.java lines 96–1608

public class DnsNameResolver extends InetNameResolver {
    /**
     * An attribute used to mark all channels created by the {@link DnsNameResolver}.
     */
    public static final AttributeKey<Boolean> DNS_PIPELINE_ATTRIBUTE =
            AttributeKey.newInstance("io.netty.resolver.dns.pipeline");

    private static final InternalLogger logger = InternalLoggerFactory.getInstance(DnsNameResolver.class);
    private static final String LOCALHOST = "localhost";
    private static final String WINDOWS_HOST_NAME;
    private static final InetAddress LOCALHOST_ADDRESS;
    private static final DnsRecord[] EMPTY_ADDITIONALS = new DnsRecord[0];
    private static final DnsRecordType[] IPV4_ONLY_RESOLVED_RECORD_TYPES =
            {DnsRecordType.A};
    private static final SocketProtocolFamily[] IPV4_ONLY_RESOLVED_PROTOCOL_FAMILIES =
            {SocketProtocolFamily.INET};
    private static final DnsRecordType[] IPV4_PREFERRED_RESOLVED_RECORD_TYPES =
            {DnsRecordType.A, DnsRecordType.AAAA};
    private static final SocketProtocolFamily[] IPV4_PREFERRED_RESOLVED_PROTOCOL_FAMILIES =
            {SocketProtocolFamily.INET, SocketProtocolFamily.INET6};
    private static final DnsRecordType[] IPV6_ONLY_RESOLVED_RECORD_TYPES =
            {DnsRecordType.AAAA};
    private static final SocketProtocolFamily[] IPV6_ONLY_RESOLVED_PROTOCOL_FAMILIES =
            {SocketProtocolFamily.INET6};
    private static final DnsRecordType[] IPV6_PREFERRED_RESOLVED_RECORD_TYPES =
            {DnsRecordType.AAAA, DnsRecordType.A};
    private static final SocketProtocolFamily[] IPV6_PREFERRED_RESOLVED_PROTOCOL_FAMILIES =
            {SocketProtocolFamily.INET6, SocketProtocolFamily.INET};

    private static final ChannelHandler NOOP_HANDLER = new ChannelHandlerAdapter() {
        @Override
        public boolean isSharable() {
            return true;
        }
    };

    static final ResolvedAddressTypes DEFAULT_RESOLVE_ADDRESS_TYPES;
    static final String[] DEFAULT_SEARCH_DOMAINS;
    private static final UnixResolverOptions DEFAULT_OPTIONS;

    static {
        if (NetUtil.isIpV4StackPreferred() || !anyInterfaceSupportsIpV6()) {
            DEFAULT_RESOLVE_ADDRESS_TYPES = ResolvedAddressTypes.IPV4_ONLY;
            LOCALHOST_ADDRESS = NetUtil.LOCALHOST4;
        } else {
            if (NetUtil.isIpV6AddressesPreferred()) {
                DEFAULT_RESOLVE_ADDRESS_TYPES = ResolvedAddressTypes.IPV6_PREFERRED;
                LOCALHOST_ADDRESS = NetUtil.LOCALHOST6;
            } else {
                DEFAULT_RESOLVE_ADDRESS_TYPES = ResolvedAddressTypes.IPV4_PREFERRED;
                LOCALHOST_ADDRESS = NetUtil.LOCALHOST4;
            }
        }
        logger.debug("Default ResolvedAddressTypes: {}", DEFAULT_RESOLVE_ADDRESS_TYPES);
        logger.debug("Localhost address: {}", LOCALHOST_ADDRESS);

        String hostName;
        try {
            hostName = PlatformDependent.isWindows() ? InetAddress.getLocalHost().getHostName() : null;
        } catch (Exception ignore) {
            hostName = null;
        }
        WINDOWS_HOST_NAME = hostName;
        logger.debug("Windows hostname: {}", WINDOWS_HOST_NAME);

        String[] searchDomains;
        try {
            List<String> list = PlatformDependent.isWindows()
                    ? getSearchDomainsHack()
                    : UnixResolverDnsServerAddressStreamProvider.parseEtcResolverSearchDomains();
            searchDomains = list.toArray(EmptyArrays.EMPTY_STRINGS);
        } catch (Exception ignore) {
            // Failed to get the system name search domain list.
            searchDomains = EmptyArrays.EMPTY_STRINGS;
        }
        DEFAULT_SEARCH_DOMAINS = searchDomains;
        logger.debug("Default search domains: {}", Arrays.toString(DEFAULT_SEARCH_DOMAINS));

        UnixResolverOptions options;
        try {
            options = UnixResolverDnsServerAddressStreamProvider.parseEtcResolverOptions();

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free