public abstract class AbstractDnsClient
extends java.lang.Object
| Modifier and Type | Class and Description |
|---|---|
static class |
AbstractDnsClient.IpVersionSetting |
| Modifier and Type | Field and Description |
|---|---|
protected DnsCache |
cache
The internal DNS cache.
|
protected DnsDataSource |
dataSource |
protected static LruCache |
DEFAULT_CACHE |
protected static AbstractDnsClient.IpVersionSetting |
DEFAULT_IP_VERSION_SETTING |
protected java.util.Random |
insecureRandom |
protected AbstractDnsClient.IpVersionSetting |
ipVersionSetting |
protected static java.util.logging.Logger |
LOGGER |
protected java.util.Random |
random
The internal random class for sequence generation.
|
| Modifier | Constructor and Description |
|---|---|
protected |
AbstractDnsClient()
Create a new DNS client using the global default cache.
|
protected |
AbstractDnsClient(DnsCache cache)
Create a new DNS client with the given DNS cache.
|
| Modifier and Type | Method and Description |
|---|---|
DnsCache |
getCache()
Get the cache used by this DNS client.
|
java.util.Set<org.minidns.record.A> |
getCachedIPv4AddressesFor(org.minidns.dnsname.DnsName dnsName) |
java.util.Set<org.minidns.record.A> |
getCachedIPv4NameserverAddressesFor(org.minidns.dnsname.DnsName dnsName) |
java.util.Set<org.minidns.record.AAAA> |
getCachedIPv6AddressesFor(org.minidns.dnsname.DnsName dnsName) |
java.util.Set<org.minidns.record.AAAA> |
getCachedIPv6NameserverAddressesFor(org.minidns.dnsname.DnsName dnsName) |
java.util.Set<org.minidns.record.NS> |
getCachedNameserverRecordsFor(org.minidns.dnsname.DnsName dnsName) |
DnsDataSource |
getDataSource()
Returns the currently used
DnsDataSource. |
AbstractDnsClient.IpVersionSetting |
getPreferedIpVersion() |
protected org.minidns.dnsmessage.DnsMessage |
getQueryFor(org.minidns.dnsmessage.Question q) |
protected boolean |
isResponseCacheable(org.minidns.dnsmessage.Question q,
org.minidns.dnsmessage.DnsMessage dnsMessage)
Whether a response from the DNS system should be cached or not.
|
protected abstract org.minidns.dnsmessage.DnsMessage.Builder |
newQuestion(org.minidns.dnsmessage.DnsMessage.Builder questionMessage) |
org.minidns.dnsmessage.DnsMessage |
query(java.lang.CharSequence name,
org.minidns.record.Record.TYPE type)
Query the system nameservers for a single entry of the class IN
(which is used for MX, SRV, A, AAAA and most other RRs).
|
protected abstract org.minidns.dnsmessage.DnsMessage |
query(org.minidns.dnsmessage.DnsMessage.Builder query)
Send a query request to the DNS system.
|
org.minidns.dnsmessage.DnsMessage |
query(org.minidns.dnsmessage.DnsMessage query,
java.net.InetAddress host) |
org.minidns.dnsmessage.DnsMessage |
query(org.minidns.dnsmessage.DnsMessage requestMessage,
java.net.InetAddress address,
int port) |
org.minidns.dnsmessage.DnsMessage |
query(org.minidns.dnsname.DnsName name,
org.minidns.record.Record.TYPE type)
Query the system nameservers for a single entry of the class IN
(which is used for MX, SRV, A, AAAA and most other RRs).
|
org.minidns.dnsmessage.DnsMessage |
query(org.minidns.dnsmessage.Question q) |
org.minidns.dnsmessage.DnsMessage |
query(org.minidns.dnsmessage.Question q,
java.net.InetAddress address)
Query a specific server for one entry.
|
org.minidns.dnsmessage.DnsMessage |
query(org.minidns.dnsmessage.Question q,
java.net.InetAddress server,
int port) |
org.minidns.dnsmessage.DnsMessage |
query(java.lang.String name,
org.minidns.record.Record.TYPE type,
java.net.InetAddress address)
Query a nameserver for a single entry of class IN.
|
org.minidns.dnsmessage.DnsMessage |
query(java.lang.String name,
org.minidns.record.Record.TYPE type,
org.minidns.record.Record.CLASS clazz)
Query the system nameservers for a single entry of any class.
|
org.minidns.dnsmessage.DnsMessage |
query(java.lang.String name,
org.minidns.record.Record.TYPE type,
org.minidns.record.Record.CLASS clazz,
java.net.InetAddress address)
Query a nameserver for a single entry.
|
org.minidns.dnsmessage.DnsMessage |
query(java.lang.String name,
org.minidns.record.Record.TYPE type,
org.minidns.record.Record.CLASS clazz,
java.net.InetAddress address,
int port)
Query a nameserver for a single entry.
|
MiniDnsFuture<org.minidns.dnsmessage.DnsMessage,java.io.IOException> |
queryAsync(java.lang.CharSequence name,
org.minidns.record.Record.TYPE type) |
protected MiniDnsFuture<org.minidns.dnsmessage.DnsMessage,java.io.IOException> |
queryAsync(org.minidns.dnsmessage.DnsMessage.Builder query)
Default implementation of an asynchronous DNS query which just wraps the synchronous case.
|
MiniDnsFuture<org.minidns.dnsmessage.DnsMessage,java.io.IOException> |
queryAsync(org.minidns.dnsmessage.DnsMessage query,
java.net.InetAddress dnsServer) |
MiniDnsFuture<org.minidns.dnsmessage.DnsMessage,java.io.IOException> |
queryAsync(org.minidns.dnsmessage.DnsMessage requestMessage,
java.net.InetAddress address,
int port) |
MiniDnsFuture<org.minidns.dnsmessage.DnsMessage,java.io.IOException> |
queryAsync(org.minidns.dnsmessage.Question q) |
void |
setDataSource(DnsDataSource dataSource)
Set a
DnsDataSource to be used by the DnsClient. |
static void |
setDefaultIpVersion(AbstractDnsClient.IpVersionSetting preferedIpVersion) |
void |
setPreferedIpVersion(AbstractDnsClient.IpVersionSetting preferedIpVersion) |
protected static final LruCache DEFAULT_CACHE
protected static final java.util.logging.Logger LOGGER
protected final java.util.Random random
protected final java.util.Random insecureRandom
protected final DnsCache cache
protected DnsDataSource dataSource
protected static AbstractDnsClient.IpVersionSetting DEFAULT_IP_VERSION_SETTING
protected AbstractDnsClient.IpVersionSetting ipVersionSetting
protected AbstractDnsClient(DnsCache cache)
cache - The backend DNS cache.protected AbstractDnsClient()
public static void setDefaultIpVersion(AbstractDnsClient.IpVersionSetting preferedIpVersion)
public void setPreferedIpVersion(AbstractDnsClient.IpVersionSetting preferedIpVersion)
public AbstractDnsClient.IpVersionSetting getPreferedIpVersion()
public final org.minidns.dnsmessage.DnsMessage query(java.lang.String name,
org.minidns.record.Record.TYPE type,
org.minidns.record.Record.CLASS clazz)
throws java.io.IOException
name - The DNS name to request.type - The DNS type to request (SRV, A, AAAA, ...).clazz - The class of the request (usually IN for Internet).java.io.IOException - if an IO error occurs.public final org.minidns.dnsmessage.DnsMessage query(org.minidns.dnsname.DnsName name,
org.minidns.record.Record.TYPE type)
throws java.io.IOException
name - The DNS name to request.type - The DNS type to request (SRV, A, AAAA, ...).java.io.IOException - if an IO error occurs.public final org.minidns.dnsmessage.DnsMessage query(java.lang.CharSequence name,
org.minidns.record.Record.TYPE type)
throws java.io.IOException
name - The DNS name to request.type - The DNS type to request (SRV, A, AAAA, ...).java.io.IOException - if an IO error occurs.public org.minidns.dnsmessage.DnsMessage query(org.minidns.dnsmessage.Question q)
throws java.io.IOException
java.io.IOExceptionprotected abstract org.minidns.dnsmessage.DnsMessage query(org.minidns.dnsmessage.DnsMessage.Builder query)
throws java.io.IOException
query - The query to send to the server.java.io.IOException - if an IO error occurs.public final MiniDnsFuture<org.minidns.dnsmessage.DnsMessage,java.io.IOException> queryAsync(java.lang.CharSequence name, org.minidns.record.Record.TYPE type)
public final MiniDnsFuture<org.minidns.dnsmessage.DnsMessage,java.io.IOException> queryAsync(org.minidns.dnsmessage.Question q)
protected MiniDnsFuture<org.minidns.dnsmessage.DnsMessage,java.io.IOException> queryAsync(org.minidns.dnsmessage.DnsMessage.Builder query)
Subclasses override this method to support true asynchronous queries.
query - the query.public final org.minidns.dnsmessage.DnsMessage query(org.minidns.dnsmessage.Question q,
java.net.InetAddress server,
int port)
throws java.io.IOException
java.io.IOExceptionpublic final org.minidns.dnsmessage.DnsMessage query(org.minidns.dnsmessage.DnsMessage requestMessage,
java.net.InetAddress address,
int port)
throws java.io.IOException
java.io.IOExceptionpublic final MiniDnsFuture<org.minidns.dnsmessage.DnsMessage,java.io.IOException> queryAsync(org.minidns.dnsmessage.DnsMessage requestMessage, java.net.InetAddress address, int port)
protected boolean isResponseCacheable(org.minidns.dnsmessage.Question q,
org.minidns.dnsmessage.DnsMessage dnsMessage)
q - The question the response message should answer.dnsMessage - The response message received using the DNS client.protected abstract org.minidns.dnsmessage.DnsMessage.Builder newQuestion(org.minidns.dnsmessage.DnsMessage.Builder questionMessage)
public org.minidns.dnsmessage.DnsMessage query(java.lang.String name,
org.minidns.record.Record.TYPE type,
org.minidns.record.Record.CLASS clazz,
java.net.InetAddress address,
int port)
throws java.io.IOException
name - The DNS name to request.type - The DNS type to request (SRV, A, AAAA, ...).clazz - The class of the request (usually IN for Internet).address - The DNS server address.port - The DNS server port.java.io.IOException - On IO Errors.public org.minidns.dnsmessage.DnsMessage query(java.lang.String name,
org.minidns.record.Record.TYPE type,
org.minidns.record.Record.CLASS clazz,
java.net.InetAddress address)
throws java.io.IOException
name - The DNS name to request.type - The DNS type to request (SRV, A, AAAA, ...).clazz - The class of the request (usually IN for Internet).address - The DNS server host.java.io.IOException - On IO Errors.public org.minidns.dnsmessage.DnsMessage query(java.lang.String name,
org.minidns.record.Record.TYPE type,
java.net.InetAddress address)
throws java.io.IOException
name - The DNS name to request.type - The DNS type to request (SRV, A, AAAA, ...).address - The DNS server host.java.io.IOException - On IO Errors.public final org.minidns.dnsmessage.DnsMessage query(org.minidns.dnsmessage.DnsMessage query,
java.net.InetAddress host)
throws java.io.IOException
java.io.IOExceptionpublic org.minidns.dnsmessage.DnsMessage query(org.minidns.dnsmessage.Question q,
java.net.InetAddress address)
throws java.io.IOException
q - The question section of the DNS query.address - The dns server address.java.io.IOException - On IOErrors.public final MiniDnsFuture<org.minidns.dnsmessage.DnsMessage,java.io.IOException> queryAsync(org.minidns.dnsmessage.DnsMessage query, java.net.InetAddress dnsServer)
public DnsDataSource getDataSource()
DnsDataSource. See setDataSource(DnsDataSource) for details.DnsDataSourcepublic void setDataSource(DnsDataSource dataSource)
DnsDataSource to be used by the DnsClient.
The default implementation will direct all queries directly to the Internet.
This can be used to define a non-default handling for outgoing data. This can be useful to redirect the requests
to a proxy or to modify requests after or responses before they are handled by the DnsClient implementation.dataSource - An implementation of DNSDataSource that shall be used.public DnsCache getCache()
null.protected org.minidns.dnsmessage.DnsMessage getQueryFor(org.minidns.dnsmessage.Question q)
public java.util.Set<org.minidns.record.NS> getCachedNameserverRecordsFor(org.minidns.dnsname.DnsName dnsName)
public java.util.Set<org.minidns.record.A> getCachedIPv4AddressesFor(org.minidns.dnsname.DnsName dnsName)
public java.util.Set<org.minidns.record.AAAA> getCachedIPv6AddressesFor(org.minidns.dnsname.DnsName dnsName)
public java.util.Set<org.minidns.record.A> getCachedIPv4NameserverAddressesFor(org.minidns.dnsname.DnsName dnsName)
public java.util.Set<org.minidns.record.AAAA> getCachedIPv6NameserverAddressesFor(org.minidns.dnsname.DnsName dnsName)