1// Copyright (c) 1999-2004 Brian Wellington (bwelling@xbill.org) 2 3package org.xbill.DNS; 4 5import java.io.*; 6import java.util.*; 7 8/** 9 * Interface describing a resolver. 10 * 11 * @author Brian Wellington 12 */ 13 14public interface Resolver { 15 16/** 17 * Sets the port to communicate with on the server 18 * @param port The port to send messages to 19 */ 20void 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 */ 26void 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 */ 33void 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 */ 41void 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 */ 55void 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 */ 61void 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 */ 68void 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 */ 74void 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 */ 82Message 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 */ 93Object sendAsync(final Message query, final ResolverListener listener); 94 95} 96