@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.
|
asAddressResolver
resolve, resolve, resolveAll, resolveAll
public 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 DatagramChannel
resolveCache
- 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 Closeable
close
in interface AutoCloseable
close
in class SimpleNameResolver<InetAddress>
protected EventLoop executor()
SimpleNameResolver
EventExecutor
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
SimpleNameResolver
SimpleNameResolver.resolve(String)
to perform the actual name resolution.doResolve
in class SimpleNameResolver<InetAddress>
Exception
protected void doResolve(String inetHost, DnsRecord[] additionals, Promise<InetAddress> promise, DnsCache resolveCache) throws Exception
Exception
protected void doResolveAll(String inetHost, Promise<List<InetAddress>> promise) throws Exception
SimpleNameResolver
SimpleNameResolver.resolveAll(String)
to perform the actual name resolution.doResolveAll
in class SimpleNameResolver<InetAddress>
Exception
protected void doResolveAll(String inetHost, DnsRecord[] additionals, Promise<List<InetAddress>> promise, DnsCache resolveCache) throws Exception
Exception
public 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.