org.xbill.DNS
Class SimpleResolver

java.lang.Object
  extended by org.xbill.DNS.SimpleResolver
All Implemented Interfaces:
Resolver

public class SimpleResolver
extends Object
implements Resolver

An implementation of Resolver that sends one query to one server. SimpleResolver handles TCP retries, transaction security (TSIG), and EDNS 0.

Author:
Brian Wellington
See Also:
Resolver, TSIG, OPTRecord

Field Summary
static int DEFAULT_EDNS_PAYLOADSIZE
          The default EDNS payload size
static int DEFAULT_PORT
          The default port to send queries to
 
Constructor Summary
SimpleResolver()
          Creates a SimpleResolver.
SimpleResolver(String hostname)
          Creates a SimpleResolver that will query the specified host
 
Method Summary
 Message send(Message query)
          Sends a message to a single server and waits for a response.
 Object sendAsync(Message query, ResolverListener listener)
          Asynchronously sends a message to a single server, registering a listener to receive a callback on success or exception.
 void setAddress(InetAddress addr)
          Sets the address of the server to communicate with (on the default DNS port)
 void setAddress(InetSocketAddress addr)
          Sets the address of the server to communicate with.
static void setDefaultResolver(String hostname)
          Sets the default host (initially localhost) to query
 void setEDNS(int level)
          Sets the EDNS version used on outgoing messages.
 void setEDNS(int level, int payloadSize, int flags, List options)
          Sets the EDNS information on outgoing messages.
 void setIgnoreTruncation(boolean flag)
          Sets whether truncated responses will be ignored.
 void setLocalAddress(InetAddress addr)
          Sets the local address to bind to when sending messages.
 void setLocalAddress(InetSocketAddress addr)
          Sets the local address to bind to when sending messages.
 void setPort(int port)
          Sets the port to communicate with on the server
 void setTCP(boolean flag)
          Sets whether TCP connections will be sent by default
 void setTimeout(int secs)
          Sets the amount of time to wait for a response before giving up.
 void setTimeout(int secs, int msecs)
          Sets the amount of time to wait for a response before giving up.
 void setTSIGKey(TSIG key)
          Specifies the TSIG key that messages will be signed with
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_PORT

public static final int DEFAULT_PORT
The default port to send queries to

See Also:
Constant Field Values

DEFAULT_EDNS_PAYLOADSIZE

public static final int DEFAULT_EDNS_PAYLOADSIZE
The default EDNS payload size

See Also:
Constant Field Values
Constructor Detail

SimpleResolver

public SimpleResolver(String hostname)
               throws UnknownHostException
Creates a SimpleResolver that will query the specified host

Throws:
UnknownHostException - Failure occurred while finding the host

SimpleResolver

public SimpleResolver()
               throws UnknownHostException
Creates a SimpleResolver. The host to query is either found by using ResolverConfig, or the default host is used.

Throws:
UnknownHostException - Failure occurred while finding the host
See Also:
ResolverConfig
Method Detail

setDefaultResolver

public static void setDefaultResolver(String hostname)
Sets the default host (initially localhost) to query


setPort

public void setPort(int port)
Description copied from interface: Resolver
Sets the port to communicate with on the server

Specified by:
setPort in interface Resolver
Parameters:
port - The port to send messages to

setAddress

public void setAddress(InetSocketAddress addr)
Sets the address of the server to communicate with.

Parameters:
addr - The address of the DNS server

setAddress

public void setAddress(InetAddress addr)
Sets the address of the server to communicate with (on the default DNS port)

Parameters:
addr - The address of the DNS server

setLocalAddress

public void setLocalAddress(InetSocketAddress addr)
Sets the local address to bind to when sending messages.

Parameters:
addr - The local address to send messages from.

setLocalAddress

public void setLocalAddress(InetAddress addr)
Sets the local address to bind to when sending messages. A random port will be used.

Parameters:
addr - The local address to send messages from.

setTCP

public void setTCP(boolean flag)
Description copied from interface: Resolver
Sets whether TCP connections will be sent by default

Specified by:
setTCP in interface Resolver
Parameters:
flag - Indicates whether TCP connections are made

setIgnoreTruncation

public void setIgnoreTruncation(boolean flag)
Description copied from interface: Resolver
Sets whether truncated responses will be ignored. If not, a truncated response over UDP will cause a retransmission over TCP.

Specified by:
setIgnoreTruncation in interface Resolver
Parameters:
flag - Indicates whether truncated responses should be ignored.

setEDNS

public void setEDNS(int level,
                    int payloadSize,
                    int flags,
                    List options)
Description copied from interface: Resolver
Sets the EDNS information on outgoing messages.

Specified by:
setEDNS in interface Resolver
Parameters:
level - The EDNS level to use. 0 indicates EDNS0 and -1 indicates no EDNS.
payloadSize - The maximum DNS packet size that this host is capable of receiving over UDP. If 0 is specified, the default (1280) is used.
flags - EDNS extended flags to be set in the OPT record.
options - EDNS options to be set in the OPT record, specified as a List of OPTRecord.Option elements.
See Also:
OPTRecord

setEDNS

public void setEDNS(int level)
Description copied from interface: Resolver
Sets the EDNS version used on outgoing messages.

Specified by:
setEDNS in interface Resolver
Parameters:
level - The EDNS level to use. 0 indicates EDNS0 and -1 indicates no EDNS.

setTSIGKey

public void setTSIGKey(TSIG key)
Description copied from interface: Resolver
Specifies the TSIG key that messages will be signed with

Specified by:
setTSIGKey in interface Resolver
Parameters:
key - The key

setTimeout

public void setTimeout(int secs,
                       int msecs)
Description copied from interface: Resolver
Sets the amount of time to wait for a response before giving up.

Specified by:
setTimeout in interface Resolver
Parameters:
secs - The number of seconds to wait.
msecs - The number of milliseconds to wait.

setTimeout

public void setTimeout(int secs)
Description copied from interface: Resolver
Sets the amount of time to wait for a response before giving up.

Specified by:
setTimeout in interface Resolver
Parameters:
secs - The number of seconds to wait.

send

public Message send(Message query)
             throws IOException
Sends a message to a single server and waits for a response. No checking is done to ensure that the response is associated with the query.

Specified by:
send in interface Resolver
Parameters:
query - The query to send.
Returns:
The response.
Throws:
IOException - An error occurred while sending or receiving.

sendAsync

public Object sendAsync(Message query,
                        ResolverListener listener)
Asynchronously sends a message to a single server, registering a listener to receive a callback on success or exception. Multiple asynchronous lookups can be performed in parallel. Since the callback may be invoked before the function returns, external synchronization is necessary.

Specified by:
sendAsync in interface Resolver
Parameters:
query - The query to send
listener - The object containing the callbacks.
Returns:
An identifier, which is also a parameter in the callback