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();
Source
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