@UnstableApi public class DnsNameResolver extends InetNameResolver
InetNameResolver.| Constructor and Description |
|---|
DnsNameResolver(EventLoop eventLoop,
ChannelFactory<? extends DatagramChannel> channelFactory,
DnsCache resolveCache,
DnsCache authoritativeDnsServerCache,
DnsQueryLifecycleObserverFactory dnsQueryLifecycleObserverFactory,
long queryTimeoutMillis,
ResolvedAddressTypes resolvedAddressTypes,
boolean recursionDesired,
int maxQueriesPerResolve,
boolean traceEnabled,
int maxPayloadSize,
boolean optResourceEnabled,
HostsFileEntriesResolver hostsFileEntriesResolver,
DnsServerAddressStreamProvider dnsServerAddressStreamProvider,
String[] searchDomains,
int ndots,
boolean decodeIdn)
Creates a new DNS-based name resolver that communicates with the specified list of DNS servers.
|
| Modifier and Type | Method and Description |
|---|---|
DnsCache |
authoritativeDnsServerCache()
Returns the cache used for authoritative DNS servers for a domain.
|
void |
close()
Closes the internal datagram channel used for sending and receiving DNS messages, and clears all DNS resource
records from the cache.
|
protected void |
doResolve(String inetHost,
DnsRecord[] additionals,
Promise<InetAddress> promise,
DnsCache resolveCache)
Hook designed for extensibility so one can pass a different cache on each resolution attempt
instead of using the global one.
|
protected void |
doResolve(String inetHost,
Promise<InetAddress> promise)
Invoked by
SimpleNameResolver.resolve(String) to perform the actual name resolution. |
protected void |
doResolveAll(String inetHost,
DnsRecord[] additionals,
Promise<List<InetAddress>> promise,
DnsCache resolveCache)
Hook designed for extensibility so one can pass a different cache on each resolution attempt
instead of using the global one.
|
protected void |
doResolveAll(String inetHost,
Promise<List<InetAddress>> promise)
Invoked by
SimpleNameResolver.resolveAll(String) to perform the actual name resolution. |
protected EventLoop |
executor()
Returns the
EventExecutor which is used to notify the listeners of the Future returned
by SimpleNameResolver.resolve(String). |
HostsFileEntriesResolver |
hostsFileEntriesResolver()
Returns the component that tries to resolve hostnames against the hosts file prior to asking to
remotes DNS servers.
|
boolean |
isOptResourceEnabled()
Returns the automatic inclusion of a optional records that tries to give the remote DNS server a hint about how
much data the resolver can read per response is enabled.
|
boolean |
isRecursionDesired()
Returns
true if and only if this resolver sends a DNS query with the RD (recursion desired) flag set. |
boolean |
isTraceEnabled()
Returns if this resolver should generate the detailed trace information in an exception message so that
it is easier to understand the cause of resolution failure.
|
int |
maxPayloadSize()
Returns the capacity of the datagram packet buffer (in bytes).
|
int |
maxQueriesPerResolve()
Returns the maximum allowed number of DNS queries to send when resolving a host name.
|
Future<AddressedEnvelope<DnsResponse,InetSocketAddress>> |
query(DnsQuestion question)
Sends a DNS query with the specified question.
|
Future<AddressedEnvelope<DnsResponse,InetSocketAddress>> |
query(DnsQuestion question,
Iterable<DnsRecord> additionals)
Sends a DNS query with the specified question with additional records.
|
Future<AddressedEnvelope<DnsResponse,InetSocketAddress>> |
query(DnsQuestion question,
Promise<AddressedEnvelope<? extends DnsResponse,InetSocketAddress>> promise)
Sends a DNS query with the specified question.
|
Future<AddressedEnvelope<DnsResponse,InetSocketAddress>> |
query(InetSocketAddress nameServerAddr,
DnsQuestion question)
Sends a DNS query with the specified question using the specified name server list.
|
Future<AddressedEnvelope<DnsResponse,InetSocketAddress>> |
query(InetSocketAddress nameServerAddr,
DnsQuestion question,
Iterable<DnsRecord> additionals)
Sends a DNS query with the specified question with additional records using the specified name server list.
|
Future<AddressedEnvelope<DnsResponse,InetSocketAddress>> |
query(InetSocketAddress nameServerAddr,
DnsQuestion question,
Iterable<DnsRecord> additionals,
Promise<AddressedEnvelope<? extends DnsResponse,InetSocketAddress>> promise)
Sends a DNS query with the specified question with additional records using the specified name server list.
|
Future<AddressedEnvelope<DnsResponse,InetSocketAddress>> |
query(InetSocketAddress nameServerAddr,
DnsQuestion question,
Promise<AddressedEnvelope<? extends DnsResponse,InetSocketAddress>> promise)
Sends a DNS query with the specified question using the specified name server list.
|
long |
queryTimeoutMillis()
Returns the timeout of each DNS query performed by this resolver (in milliseconds).
|
Future<InetAddress> |
resolve(String inetHost,
Iterable<DnsRecord> additionals)
Resolves the specified name into an address.
|
Future<InetAddress> |
resolve(String inetHost,
Iterable<DnsRecord> additionals,
Promise<InetAddress> promise)
Resolves the specified name into an address.
|
Future<List<InetAddress>> |
resolveAll(String inetHost,
Iterable<DnsRecord> additionals)
Resolves the specified host name and port into a list of address.
|
Future<List<InetAddress>> |
resolveAll(String inetHost,
Iterable<DnsRecord> additionals,
Promise<List<InetAddress>> promise)
Resolves the specified host name and port into a list of address.
|
DnsCache |
resolveCache()
Returns the resolution cache.
|
ResolvedAddressTypes |
resolvedAddressTypes()
Returns the
ResolvedAddressTypes resolved by SimpleNameResolver.resolve(String). |
protected DnsServerAddressStream |
uncachedRedirectDnsServerStream(List<InetSocketAddress> nameServers)
Provides the opportunity to sort the name servers before following a redirected DNS query.
|
asAddressResolverresolve, resolve, resolveAll, resolveAllpublic DnsNameResolver(EventLoop eventLoop, ChannelFactory<? extends DatagramChannel> channelFactory, DnsCache resolveCache, DnsCache authoritativeDnsServerCache, DnsQueryLifecycleObserverFactory dnsQueryLifecycleObserverFactory, long queryTimeoutMillis, ResolvedAddressTypes resolvedAddressTypes, boolean recursionDesired, int maxQueriesPerResolve, boolean traceEnabled, int maxPayloadSize, boolean optResourceEnabled, HostsFileEntriesResolver hostsFileEntriesResolver, DnsServerAddressStreamProvider dnsServerAddressStreamProvider, String[] searchDomains, int ndots, boolean decodeIdn)
eventLoop - the EventLoop which will perform the communication with the DNS serverschannelFactory - the ChannelFactory that will create a DatagramChannelresolveCache - the DNS resolved entries cacheauthoritativeDnsServerCache - the cache used to find the authoritative DNS server for a domaindnsQueryLifecycleObserverFactory - used to generate new instances of DnsQueryLifecycleObserver which
can be used to track metrics for DNS servers.queryTimeoutMillis - timeout of each DNS query in millisresolvedAddressTypes - the preferred address typesrecursionDesired - if recursion desired flag must be setmaxQueriesPerResolve - the maximum allowed number of DNS queries for a given name resolutiontraceEnabled - if trace is enabledmaxPayloadSize - the capacity of the datagram packet bufferoptResourceEnabled - if automatic inclusion of a optional records is enabledhostsFileEntriesResolver - the HostsFileEntriesResolver used to check for local aliasesdnsServerAddressStreamProvider - The DnsServerAddressStreamProvider used to determine the name
servers for each hostname lookup.searchDomains - the list of search domainndots - the ndots valuedecodeIdn - true if domain / host names should be decoded to unicode when received.
See rfc3492.protected DnsServerAddressStream uncachedRedirectDnsServerStream(List<InetSocketAddress> nameServers)
nameServers - The addresses of the DNS servers which are used in the event of a redirect.DnsServerAddressStream which will be used to follow the DNS redirect.public DnsCache resolveCache()
public DnsCache authoritativeDnsServerCache()
public long queryTimeoutMillis()
public ResolvedAddressTypes resolvedAddressTypes()
ResolvedAddressTypes resolved by SimpleNameResolver.resolve(String).
The default value depends on the value of the system property "java.net.preferIPv6Addresses".public boolean isRecursionDesired()
true if and only if this resolver sends a DNS query with the RD (recursion desired) flag set.
The default value is true.public int maxQueriesPerResolve()
8.public boolean isTraceEnabled()
true.public int maxPayloadSize()
4096 bytes.public boolean isOptResourceEnabled()
public HostsFileEntriesResolver hostsFileEntriesResolver()
public void close()
close in interface NameResolver<InetAddress>close in interface Closeableclose in interface AutoCloseableclose in class SimpleNameResolver<InetAddress>protected EventLoop executor()
SimpleNameResolverEventExecutor which is used to notify the listeners of the Future returned
by SimpleNameResolver.resolve(String).executor in class SimpleNameResolver<InetAddress>public final Future<InetAddress> resolve(String inetHost, Iterable<DnsRecord> additionals)
inetHost - the name to resolveadditionals - additional records (OPT)public final Future<InetAddress> resolve(String inetHost, Iterable<DnsRecord> additionals, Promise<InetAddress> promise)
inetHost - the name to resolveadditionals - additional records (OPT)promise - the Promise which will be fulfilled when the name resolution is finishedpublic final Future<List<InetAddress>> resolveAll(String inetHost, Iterable<DnsRecord> additionals)
inetHost - the name to resolveadditionals - additional records (OPT)public final Future<List<InetAddress>> resolveAll(String inetHost, Iterable<DnsRecord> additionals, Promise<List<InetAddress>> promise)
inetHost - the name to resolveadditionals - additional records (OPT)promise - the Promise which will be fulfilled when the name resolution is finishedprotected void doResolve(String inetHost, Promise<InetAddress> promise) throws Exception
SimpleNameResolverSimpleNameResolver.resolve(String) to perform the actual name resolution.doResolve in class SimpleNameResolver<InetAddress>Exceptionprotected void doResolve(String inetHost, DnsRecord[] additionals, Promise<InetAddress> promise, DnsCache resolveCache) throws Exception
Exceptionprotected void doResolveAll(String inetHost, Promise<List<InetAddress>> promise) throws Exception
SimpleNameResolverSimpleNameResolver.resolveAll(String) to perform the actual name resolution.doResolveAll in class SimpleNameResolver<InetAddress>Exceptionprotected void doResolveAll(String inetHost, DnsRecord[] additionals, Promise<List<InetAddress>> promise, DnsCache resolveCache) throws Exception
Exceptionpublic Future<AddressedEnvelope<DnsResponse,InetSocketAddress>> query(DnsQuestion question)
public Future<AddressedEnvelope<DnsResponse,InetSocketAddress>> query(DnsQuestion question, Iterable<DnsRecord> additionals)
public Future<AddressedEnvelope<DnsResponse,InetSocketAddress>> query(DnsQuestion question, Promise<AddressedEnvelope<? extends DnsResponse,InetSocketAddress>> promise)
public Future<AddressedEnvelope<DnsResponse,InetSocketAddress>> query(InetSocketAddress nameServerAddr, DnsQuestion question)
public Future<AddressedEnvelope<DnsResponse,InetSocketAddress>> query(InetSocketAddress nameServerAddr, DnsQuestion question, Iterable<DnsRecord> additionals)
public Future<AddressedEnvelope<DnsResponse,InetSocketAddress>> query(InetSocketAddress nameServerAddr, DnsQuestion question, Promise<AddressedEnvelope<? extends DnsResponse,InetSocketAddress>> promise)
public Future<AddressedEnvelope<DnsResponse,InetSocketAddress>> query(InetSocketAddress nameServerAddr, DnsQuestion question, Iterable<DnsRecord> additionals, Promise<AddressedEnvelope<? extends DnsResponse,InetSocketAddress>> promise)
Copyright © 2008–2017 The Netty Project. All rights reserved.