@UnstableApi public class DnsNameResolver extends InetNameResolver
InetNameResolver
.Constructor and Description |
---|
DnsNameResolver(EventLoop eventLoop,
ChannelFactory<? extends DatagramChannel> channelFactory,
DnsServerAddresses nameServerAddresses,
DnsCache resolveCache,
long queryTimeoutMillis,
InternetProtocolFamily[] resolvedAddressTypes,
boolean recursionDesired,
int maxQueriesPerResolve,
boolean traceEnabled,
int maxPayloadSize,
boolean optResourceEnabled,
HostsFileEntriesResolver hostsFileEntriesResolver,
String[] searchDomains,
int ndots)
Creates a new DNS-based name resolver that communicates with the specified list of DNS servers.
|
Modifier and Type | Method and Description |
---|---|
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,
Promise<InetAddress> promise)
Invoked by
SimpleNameResolver.resolve(String) to perform the actual name resolution. |
protected void |
doResolve(String inetHost,
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 |
doResolveAll(String inetHost,
Promise<List<InetAddress>> promise)
Invoked by
SimpleNameResolver.resolveAll(String) to perform the actual name resolution. |
protected void |
doResolveAll(String inetHost,
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 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> additional)
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> additional)
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> additional,
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).
|
DnsCache |
resolveCache()
Returns the resolution cache.
|
List<InternetProtocolFamily> |
resolvedAddressTypes()
Returns the list of the protocol families of the address resolved by
SimpleNameResolver.resolve(String)
in the order of preference. |
asAddressResolver
resolve, resolve, resolveAll, resolveAll
public DnsNameResolver(EventLoop eventLoop, ChannelFactory<? extends DatagramChannel> channelFactory, DnsServerAddresses nameServerAddresses, DnsCache resolveCache, long queryTimeoutMillis, InternetProtocolFamily[] resolvedAddressTypes, boolean recursionDesired, int maxQueriesPerResolve, boolean traceEnabled, int maxPayloadSize, boolean optResourceEnabled, HostsFileEntriesResolver hostsFileEntriesResolver, String[] searchDomains, int ndots)
eventLoop
- the EventLoop
which will perform the communication with the DNS serverschannelFactory
- the ChannelFactory
that will create a DatagramChannel
nameServerAddresses
- the addresses of the DNS server. For each DNS query, a new stream is created from
this to determine which DNS server should be contacted for the next retry in case
of failure.resolveCache
- the DNS resolved entries cachequeryTimeoutMillis
- timeout of each DNS query in millisresolvedAddressTypes
- list of the protocol familiesrecursionDesired
- 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 aliasessearchDomains
- the list of search domainndots
- the ndots valuepublic DnsCache resolveCache()
public long queryTimeoutMillis()
public List<InternetProtocolFamily> resolvedAddressTypes()
SimpleNameResolver.resolve(String)
in the order of preference.
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>
protected 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, 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, 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> additional)
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> additional)
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> additional, Promise<AddressedEnvelope<? extends DnsResponse,InetSocketAddress>> promise)
Copyright © 2008–2016 The Netty Project. All rights reserved.