/** * Asynchronously sends a message to multiple servers, potentially multiple times, 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. * * @param query The query to send * @param listener The object containing the callbacks. * @return An identifier, which is also a parameter in the callback */ public Object sendAsync(final Message query, final ResolverListener listener) { Resolution res = new Resolution(this, query); res.startAsync(listener); return res; }
/** * Sends a message and waits for a response. Multiple servers are queried, and queries are sent * multiple times until either a successful response is received, or it is clear that there is no * successful response. * * @param query The query to send. * @return The response. * @throws IOException An error occurred while sending or receiving. */ public Message send(Message query) throws IOException { Resolution res = new Resolution(this, query); return res.start(); }