DnsAddressResolverGroup Class — netty Architecture
Architecture documentation for the DnsAddressResolverGroup class in DnsAddressResolverGroup.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 8817d5d7_1e17_758a_1093_4d14950e6798["DnsAddressResolverGroup"] 670050c9_113a_ee88_d34d_442cdb94c58e["DnsAddressResolverGroup.java"] 8817d5d7_1e17_758a_1093_4d14950e6798 -->|defined in| 670050c9_113a_ee88_d34d_442cdb94c58e 12d59569_4b53_7267_483a_0989cb80afb7["DnsAddressResolverGroup()"] 8817d5d7_1e17_758a_1093_4d14950e6798 -->|method| 12d59569_4b53_7267_483a_0989cb80afb7 92d5841d_536e_cf7a_3e4c_2ea4a3fad1c5["DnsNameResolverBuilder()"] 8817d5d7_1e17_758a_1093_4d14950e6798 -->|method| 92d5841d_536e_cf7a_3e4c_2ea4a3fad1c5 3f322e07_01f6_16cc_9d21_0c09e959a466["newResolver()"] 8817d5d7_1e17_758a_1093_4d14950e6798 -->|method| 3f322e07_01f6_16cc_9d21_0c09e959a466 61d7e2da_b6e2_3584_6f17_9a5dad7c396c["newNameResolver()"] 8817d5d7_1e17_758a_1093_4d14950e6798 -->|method| 61d7e2da_b6e2_3584_6f17_9a5dad7c396c 62731268_af7a_d98a_661d_a9ed026a476f["newAddressResolver()"] 8817d5d7_1e17_758a_1093_4d14950e6798 -->|method| 62731268_af7a_d98a_661d_a9ed026a476f
Relationship Graph
Source Code
resolver-dns/src/main/java/io/netty/resolver/dns/DnsAddressResolverGroup.java lines 39–133
public class DnsAddressResolverGroup extends AddressResolverGroup<InetSocketAddress> {
private final DnsNameResolverBuilder dnsResolverBuilder;
private final ConcurrentMap<String, Promise<InetAddress>> resolvesInProgress = new ConcurrentHashMap<>();
private final ConcurrentMap<String, Promise<List<InetAddress>>> resolveAllsInProgress = new ConcurrentHashMap<>();
public DnsAddressResolverGroup(DnsNameResolverBuilder dnsResolverBuilder) {
this.dnsResolverBuilder = withSharedCaches(dnsResolverBuilder.copy());
}
public DnsAddressResolverGroup(
Class<? extends DatagramChannel> channelType,
DnsServerAddressStreamProvider nameServerProvider) {
this.dnsResolverBuilder = withSharedCaches(new DnsNameResolverBuilder());
dnsResolverBuilder.datagramChannelType(channelType).nameServerProvider(nameServerProvider);
}
public DnsAddressResolverGroup(
ChannelFactory<? extends DatagramChannel> channelFactory,
DnsServerAddressStreamProvider nameServerProvider) {
this.dnsResolverBuilder = withSharedCaches(new DnsNameResolverBuilder());
dnsResolverBuilder.datagramChannelFactory(channelFactory).nameServerProvider(nameServerProvider);
}
private static DnsNameResolverBuilder withSharedCaches(DnsNameResolverBuilder dnsResolverBuilder) {
/// To avoid each member of the group having its own cache we either use the configured cache
// or create a new one to share among the entire group.
return dnsResolverBuilder.resolveCache(dnsResolverBuilder.getOrNewCache())
.cnameCache(dnsResolverBuilder.getOrNewCnameCache())
.authoritativeDnsServerCache(dnsResolverBuilder.getOrNewAuthoritativeDnsServerCache());
}
@SuppressWarnings("deprecation")
@Override
protected final AddressResolver<InetSocketAddress> newResolver(EventExecutor executor) throws Exception {
if (!(executor instanceof EventLoop)) {
throw new IllegalStateException(
"unsupported executor type: " + StringUtil.simpleClassName(executor) +
" (expected: " + StringUtil.simpleClassName(EventLoop.class));
}
// we don't really need to pass channelFactory and nameServerProvider separately,
// but still keep this to ensure backward compatibility with (potentially) override methods
EventLoop loop = dnsResolverBuilder.eventLoop;
return newResolver(loop == null ? (EventLoop) executor : loop,
dnsResolverBuilder.datagramChannelFactory(),
dnsResolverBuilder.nameServerProvider());
}
/**
* @deprecated Override {@link #newNameResolver(EventLoop, ChannelFactory, DnsServerAddressStreamProvider)}.
*/
@Deprecated
protected AddressResolver<InetSocketAddress> newResolver(
EventLoop eventLoop, ChannelFactory<? extends DatagramChannel> channelFactory,
DnsServerAddressStreamProvider nameServerProvider) throws Exception {
final NameResolver<InetAddress> resolver = new InflightNameResolver<InetAddress>(
eventLoop,
newNameResolver(eventLoop, channelFactory, nameServerProvider),
resolvesInProgress,
resolveAllsInProgress);
return newAddressResolver(eventLoop, resolver);
}
/**
* Creates a new {@link NameResolver}. Override this method to create an alternative {@link NameResolver}
* implementation or override the default configuration.
*/
protected NameResolver<InetAddress> newNameResolver(EventLoop eventLoop,
ChannelFactory<? extends DatagramChannel> channelFactory,
DnsServerAddressStreamProvider nameServerProvider)
throws Exception {
DnsNameResolverBuilder builder = dnsResolverBuilder.copy();
// once again, channelFactory and nameServerProvider are most probably set in builder already,
// but I do reassign them again to avoid corner cases with override methods
return builder.eventLoop(eventLoop)
.datagramChannelFactory(channelFactory)
Source
Frequently Asked Questions
What is the DnsAddressResolverGroup class?
DnsAddressResolverGroup is a class in the netty codebase, defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsAddressResolverGroup.java.
Where is DnsAddressResolverGroup defined?
DnsAddressResolverGroup is defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsAddressResolverGroup.java at line 39.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free