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