1 // Copyright (c) 1999-2004 Brian Wellington (bwelling (at) xbill.org) 2 3 package org.xbill.DNS; 4 5 import java.io.*; 6 import java.util.*; 7 8 /** 9 * Interface describing a resolver. 10 * 11 * @author Brian Wellington 12 */ 13 14 public interface Resolver { 15 16 /** 17 * Sets the port to communicate with on the server 18 * @param port The port to send messages to 19 */ 20 void setPort(int port); 21 22 /** 23 * Sets whether TCP connections will be sent by default 24 * @param flag Indicates whether TCP connections are made 25 */ 26 void setTCP(boolean flag); 27 28 /** 29 * Sets whether truncated responses will be ignored. If not, a truncated 30 * response over UDP will cause a retransmission over TCP. 31 * @param flag Indicates whether truncated responses should be ignored. 32 */ 33 void setIgnoreTruncation(boolean flag); 34 35 /** 36 * Sets the EDNS version used on outgoing messages. 37 * @param level The EDNS level to use. 0 indicates EDNS0 and -1 indicates no 38 * EDNS. 39 * @throws IllegalArgumentException An invalid level was indicated. 40 */ 41 void setEDNS(int level); 42 43 /** 44 * Sets the EDNS information on outgoing messages. 45 * @param level The EDNS level to use. 0 indicates EDNS0 and -1 indicates no 46 * EDNS. 47 * @param payloadSize The maximum DNS packet size that this host is capable 48 * of receiving over UDP. If 0 is specified, the default (1280) is used. 49 * @param flags EDNS extended flags to be set in the OPT record. 50 * @param options EDNS options to be set in the OPT record, specified as a 51 * List of OPTRecord.Option elements. 52 * @throws IllegalArgumentException An invalid field was specified. 53 * @see OPTRecord 54 */ 55 void setEDNS(int level, int payloadSize, int flags, List options); 56 57 /** 58 * Specifies the TSIG key that messages will be signed with 59 * @param key The key 60 */ 61 void setTSIGKey(TSIG key); 62 63 /** 64 * Sets the amount of time to wait for a response before giving up. 65 * @param secs The number of seconds to wait. 66 * @param msecs The number of milliseconds to wait. 67 */ 68 void setTimeout(int secs, int msecs); 69 70 /** 71 * Sets the amount of time to wait for a response before giving up. 72 * @param secs The number of seconds to wait. 73 */ 74 void setTimeout(int secs); 75 76 /** 77 * Sends a message and waits for a response. 78 * @param query The query to send. 79 * @return The response 80 * @throws IOException An error occurred while sending or receiving. 81 */ 82 Message send(Message query) throws IOException; 83 84 /** 85 * Asynchronously sends a message registering a listener to receive a callback 86 * on success or exception. Multiple asynchronous lookups can be performed 87 * in parallel. Since the callback may be invoked before the function returns, 88 * external synchronization is necessary. 89 * @param query The query to send 90 * @param listener The object containing the callbacks. 91 * @return An identifier, which is also a parameter in the callback 92 */ 93 Object sendAsync(final Message query, final ResolverListener listener); 94 95 } 96