1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen// Copyright (c) 1999-2004 Brian Wellington (bwelling@xbill.org)
2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.xbill.DNS;
4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/**
6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * A special-purpose thread used by Resolvers (both SimpleResolver and
7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * ExtendedResolver) to perform asynchronous queries.
8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Brian Wellington
10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */
11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenclass ResolveThread extends Thread {
13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprivate Message query;
15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprivate Object id;
16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprivate ResolverListener listener;
17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprivate Resolver res;
18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Creates a new ResolveThread */
20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic
21d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenResolveThread(Resolver res, Message query, Object id,
22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	      ResolverListener listener)
23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen{
24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	this.res = res;
25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	this.query = query;
26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	this.id = id;
27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	this.listener = listener;
28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/**
32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Performs the query, and executes the callback.
33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */
34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic void
35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenrun() {
36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	try {
37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		Message response = res.send(query);
38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		listener.receiveMessage(id, response);
39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	}
40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	catch (Exception e) {
41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		listener.handleException(id, e);
42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	}
43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
46