@UnstableApi
public class DnsNameResolver
extends io.netty.resolver.InetNameResolver
InetNameResolver
.Constructor and Description |
---|
DnsNameResolver(io.netty.channel.EventLoop eventLoop,
io.netty.channel.ChannelFactory<? extends io.netty.channel.socket.DatagramChannel> channelFactory,
DnsCache resolveCache,
DnsCache authoritativeDnsServerCache,
DnsQueryLifecycleObserverFactory dnsQueryLifecycleObserverFactory,
long queryTimeoutMillis,
io.netty.resolver.ResolvedAddressTypes resolvedAddressTypes,
boolean recursionDesired,
int maxQueriesPerResolve,
boolean traceEnabled,
int maxPayloadSize,
boolean optResourceEnabled,
io.netty.resolver.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,
io.netty.handler.codec.dns.DnsRecord[] additionals,
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 |
doResolve(String inetHost,
io.netty.util.concurrent.Promise<InetAddress> promise) |
protected void |
doResolveAll(String inetHost,
io.netty.handler.codec.dns.DnsRecord[] additionals,
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 void |
doResolveAll(String inetHost,
io.netty.util.concurrent.Promise<List<InetAddress>> promise) |
protected io.netty.channel.EventLoop |
executor() |
io.netty.resolver.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. |
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<io.netty.handler.codec.dns.DnsResponse,InetSocketAddress>> |
query(io.netty.handler.codec.dns.DnsQuestion question)
Sends a DNS query with the specified question.
|
io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<io.netty.handler.codec.dns.DnsResponse,InetSocketAddress>> |
query(io.netty.handler.codec.dns.DnsQuestion question,
Iterable<io.netty.handler.codec.dns.DnsRecord> additionals)
Sends a DNS query with the specified question with additional records.
|
io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<io.netty.handler.codec.dns.DnsResponse,InetSocketAddress>> |
query(io.netty.handler.codec.dns.DnsQuestion question,
io.netty.util.concurrent.Promise<io.netty.channel.AddressedEnvelope<? extends io.netty.handler.codec.dns.DnsResponse,InetSocketAddress>> promise)
Sends a DNS query with the specified question.
|
io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<io.netty.handler.codec.dns.DnsResponse,InetSocketAddress>> |
query(InetSocketAddress nameServerAddr,
io.netty.handler.codec.dns.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<io.netty.handler.codec.dns.DnsResponse,InetSocketAddress>> |
query(InetSocketAddress nameServerAddr,
io.netty.handler.codec.dns.DnsQuestion question,
Iterable<io.netty.handler.codec.dns.DnsRecord> additionals)
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<io.netty.handler.codec.dns.DnsResponse,InetSocketAddress>> |
query(InetSocketAddress nameServerAddr,
io.netty.handler.codec.dns.DnsQuestion question,
Iterable<io.netty.handler.codec.dns.DnsRecord> additionals,
io.netty.util.concurrent.Promise<io.netty.channel.AddressedEnvelope<? extends io.netty.handler.codec.dns.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<io.netty.handler.codec.dns.DnsResponse,InetSocketAddress>> |
query(InetSocketAddress nameServerAddr,
io.netty.handler.codec.dns.DnsQuestion question,
io.netty.util.concurrent.Promise<io.netty.channel.AddressedEnvelope<? extends io.netty.handler.codec.dns.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).
|
io.netty.util.concurrent.Future<InetAddress> |
resolve(String inetHost,
Iterable<io.netty.handler.codec.dns.DnsRecord> additionals)
Resolves the specified name into an address.
|
io.netty.util.concurrent.Future<InetAddress> |
resolve(String inetHost,
Iterable<io.netty.handler.codec.dns.DnsRecord> additionals,
io.netty.util.concurrent.Promise<InetAddress> promise)
Resolves the specified name into an address.
|
io.netty.util.concurrent.Future<List<InetAddress>> |
resolveAll(String inetHost,
Iterable<io.netty.handler.codec.dns.DnsRecord> additionals)
Resolves the specified host name and port into a list of address.
|
io.netty.util.concurrent.Future<List<InetAddress>> |
resolveAll(String inetHost,
Iterable<io.netty.handler.codec.dns.DnsRecord> additionals,
io.netty.util.concurrent.Promise<List<InetAddress>> promise)
Resolves the specified host name and port into a list of address.
|
DnsCache |
resolveCache()
Returns the resolution cache.
|
io.netty.resolver.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.
|
public DnsNameResolver(io.netty.channel.EventLoop eventLoop, io.netty.channel.ChannelFactory<? extends io.netty.channel.socket.DatagramChannel> channelFactory, DnsCache resolveCache, DnsCache authoritativeDnsServerCache, DnsQueryLifecycleObserverFactory dnsQueryLifecycleObserverFactory, long queryTimeoutMillis, io.netty.resolver.ResolvedAddressTypes resolvedAddressTypes, boolean recursionDesired, int maxQueriesPerResolve, boolean traceEnabled, int maxPayloadSize, boolean optResourceEnabled, io.netty.resolver.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 domain
(can be null, if so, will try to default to the underlying platform ones)ndots
- 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 io.netty.resolver.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 int maxPayloadSize()
4096
bytes.public boolean isOptResourceEnabled()
public io.netty.resolver.HostsFileEntriesResolver hostsFileEntriesResolver()
public void close()
close
in interface io.netty.resolver.NameResolver<InetAddress>
close
in interface Closeable
close
in interface AutoCloseable
close
in class io.netty.resolver.SimpleNameResolver<InetAddress>
protected io.netty.channel.EventLoop executor()
executor
in class io.netty.resolver.SimpleNameResolver<InetAddress>
public final io.netty.util.concurrent.Future<InetAddress> resolve(String inetHost, Iterable<io.netty.handler.codec.dns.DnsRecord> additionals)
inetHost
- the name to resolveadditionals
- additional records (OPT
)public final io.netty.util.concurrent.Future<InetAddress> resolve(String inetHost, Iterable<io.netty.handler.codec.dns.DnsRecord> additionals, io.netty.util.concurrent.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 io.netty.util.concurrent.Future<List<InetAddress>> resolveAll(String inetHost, Iterable<io.netty.handler.codec.dns.DnsRecord> additionals)
inetHost
- the name to resolveadditionals
- additional records (OPT
)public final io.netty.util.concurrent.Future<List<InetAddress>> resolveAll(String inetHost, Iterable<io.netty.handler.codec.dns.DnsRecord> additionals, io.netty.util.concurrent.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, io.netty.util.concurrent.Promise<InetAddress> promise) throws Exception
doResolve
in class io.netty.resolver.SimpleNameResolver<InetAddress>
Exception
protected void doResolve(String inetHost, io.netty.handler.codec.dns.DnsRecord[] additionals, io.netty.util.concurrent.Promise<InetAddress> promise, DnsCache resolveCache) throws Exception
Exception
protected void doResolveAll(String inetHost, io.netty.util.concurrent.Promise<List<InetAddress>> promise) throws Exception
doResolveAll
in class io.netty.resolver.SimpleNameResolver<InetAddress>
Exception
protected void doResolveAll(String inetHost, io.netty.handler.codec.dns.DnsRecord[] additionals, io.netty.util.concurrent.Promise<List<InetAddress>> promise, DnsCache resolveCache) throws Exception
Exception
public io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<io.netty.handler.codec.dns.DnsResponse,InetSocketAddress>> query(io.netty.handler.codec.dns.DnsQuestion question)
public io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<io.netty.handler.codec.dns.DnsResponse,InetSocketAddress>> query(io.netty.handler.codec.dns.DnsQuestion question, Iterable<io.netty.handler.codec.dns.DnsRecord> additionals)
public io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<io.netty.handler.codec.dns.DnsResponse,InetSocketAddress>> query(io.netty.handler.codec.dns.DnsQuestion question, io.netty.util.concurrent.Promise<io.netty.channel.AddressedEnvelope<? extends io.netty.handler.codec.dns.DnsResponse,InetSocketAddress>> promise)
public io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<io.netty.handler.codec.dns.DnsResponse,InetSocketAddress>> query(InetSocketAddress nameServerAddr, io.netty.handler.codec.dns.DnsQuestion question)
public io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<io.netty.handler.codec.dns.DnsResponse,InetSocketAddress>> query(InetSocketAddress nameServerAddr, io.netty.handler.codec.dns.DnsQuestion question, Iterable<io.netty.handler.codec.dns.DnsRecord> additionals)
public io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<io.netty.handler.codec.dns.DnsResponse,InetSocketAddress>> query(InetSocketAddress nameServerAddr, io.netty.handler.codec.dns.DnsQuestion question, io.netty.util.concurrent.Promise<io.netty.channel.AddressedEnvelope<? extends io.netty.handler.codec.dns.DnsResponse,InetSocketAddress>> promise)
public io.netty.util.concurrent.Future<io.netty.channel.AddressedEnvelope<io.netty.handler.codec.dns.DnsResponse,InetSocketAddress>> query(InetSocketAddress nameServerAddr, io.netty.handler.codec.dns.DnsQuestion question, Iterable<io.netty.handler.codec.dns.DnsRecord> additionals, io.netty.util.concurrent.Promise<io.netty.channel.AddressedEnvelope<? extends io.netty.handler.codec.dns.DnsResponse,InetSocketAddress>> promise)
Copyright © 2008–2017 The Netty Project. All rights reserved.