public class DnsNameResolver extends InetNameResolver
InetNameResolver.| Constructor and Description |
|---|
DnsNameResolver(io.netty.channel.EventLoop eventLoop,
io.netty.bootstrap.ChannelFactory<? extends io.netty.channel.socket.DatagramChannel> channelFactory,
InetSocketAddress localAddress,
DnsServerAddresses nameServerAddresses,
DnsCache resolveCache,
long queryTimeoutMillis,
io.netty.channel.socket.InternetProtocolFamily[] resolvedAddressTypes,
boolean recursionDesired,
int maxQueriesPerResolve,
boolean traceEnabled,
int maxPayloadSize,
boolean optResourceEnabled,
HostsFileEntriesResolver hostsFileEntriesResolver)
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,
io.netty.util.concurrent.Promise<InetAddress> promise) |
protected void |
doResolve(String inetHost,
io.netty.util.concurrent.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,
io.netty.util.concurrent.Promise<List<InetAddress>> promise) |
protected void |
doResolveAll(String inetHost,
io.netty.util.concurrent.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 io.netty.channel.EventLoop |
executor() |
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.
|
io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<DnsResponse,InetSocketAddress>> |
query(DnsQuestion question)
Sends a DNS query with the specified question.
|
io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<DnsResponse,InetSocketAddress>> |
query(DnsQuestion question,
Iterable<DnsRecord> additional)
Sends a DNS query with the specified question with additional records.
|
io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<DnsResponse,InetSocketAddress>> |
query(DnsQuestion question,
io.netty.util.concurrent.Promise<io.netty.channel.AddressedEnvelope<? extends DnsResponse,InetSocketAddress>> promise)
Sends a DNS query with the specified question.
|
io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<DnsResponse,InetSocketAddress>> |
query(InetSocketAddress nameServerAddr,
DnsQuestion question)
Sends a DNS query with the specified question using the specified name server list.
|
io.netty.util.concurrent.Future<io.netty.channel.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.
|
io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<DnsResponse,InetSocketAddress>> |
query(InetSocketAddress nameServerAddr,
DnsQuestion question,
Iterable<DnsRecord> additional,
io.netty.util.concurrent.Promise<io.netty.channel.AddressedEnvelope<? extends DnsResponse,InetSocketAddress>> promise)
Sends a DNS query with the specified question with additional records using the specified name server list.
|
io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<DnsResponse,InetSocketAddress>> |
query(InetSocketAddress nameServerAddr,
DnsQuestion question,
io.netty.util.concurrent.Promise<io.netty.channel.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<io.netty.channel.socket.InternetProtocolFamily> |
resolvedAddressTypes()
Returns the list of the protocol families of the address resolved by
SimpleNameResolver.resolve(String)
in the order of preference. |
asAddressResolverresolve, resolve, resolveAll, resolveAllpublic DnsNameResolver(io.netty.channel.EventLoop eventLoop,
io.netty.bootstrap.ChannelFactory<? extends io.netty.channel.socket.DatagramChannel> channelFactory,
InetSocketAddress localAddress,
DnsServerAddresses nameServerAddresses,
DnsCache resolveCache,
long queryTimeoutMillis,
io.netty.channel.socket.InternetProtocolFamily[] resolvedAddressTypes,
boolean recursionDesired,
int maxQueriesPerResolve,
boolean traceEnabled,
int maxPayloadSize,
boolean optResourceEnabled,
HostsFileEntriesResolver hostsFileEntriesResolver)
eventLoop - the EventLoop which will perform the communication with the DNS serverschannelFactory - the ChannelFactory that will create a DatagramChannellocalAddress - the local address of the DatagramChannelnameServerAddresses - 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 aliasespublic DnsCache resolveCache()
public long queryTimeoutMillis()
public List<io.netty.channel.socket.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 Closeableclose in interface AutoCloseableclose in class SimpleNameResolver<InetAddress>protected io.netty.channel.EventLoop executor()
executor in class SimpleNameResolver<InetAddress>protected void doResolve(String inetHost, io.netty.util.concurrent.Promise<InetAddress> promise) throws Exception
doResolve in class SimpleNameResolver<InetAddress>Exceptionprotected void doResolve(String inetHost, io.netty.util.concurrent.Promise<InetAddress> promise, DnsCache resolveCache) throws Exception
Exceptionprotected void doResolveAll(String inetHost, io.netty.util.concurrent.Promise<List<InetAddress>> promise) throws Exception
doResolveAll in class SimpleNameResolver<InetAddress>Exceptionprotected void doResolveAll(String inetHost, io.netty.util.concurrent.Promise<List<InetAddress>> promise, DnsCache resolveCache) throws Exception
Exceptionpublic io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<DnsResponse,InetSocketAddress>> query(DnsQuestion question)
public io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<DnsResponse,InetSocketAddress>> query(DnsQuestion question, Iterable<DnsRecord> additional)
public io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<DnsResponse,InetSocketAddress>> query(DnsQuestion question, io.netty.util.concurrent.Promise<io.netty.channel.AddressedEnvelope<? extends DnsResponse,InetSocketAddress>> promise)
public io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<DnsResponse,InetSocketAddress>> query(InetSocketAddress nameServerAddr, DnsQuestion question)
public io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<DnsResponse,InetSocketAddress>> query(InetSocketAddress nameServerAddr, DnsQuestion question, Iterable<DnsRecord> additional)
public io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<DnsResponse,InetSocketAddress>> query(InetSocketAddress nameServerAddr, DnsQuestion question, io.netty.util.concurrent.Promise<io.netty.channel.AddressedEnvelope<? extends DnsResponse,InetSocketAddress>> promise)
public io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<DnsResponse,InetSocketAddress>> query(InetSocketAddress nameServerAddr, DnsQuestion question, Iterable<DnsRecord> additional, io.netty.util.concurrent.Promise<io.netty.channel.AddressedEnvelope<? extends DnsResponse,InetSocketAddress>> promise)
Copyright © 2016. All Rights Reserved.