Branch data Line data Source code
1 : : // Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC")
2 : : //
3 : : // Permission to use, copy, modify, and/or distribute this software for any
4 : : // purpose with or without fee is hereby granted, provided that the above
5 : : // copyright notice and this permission notice appear in all copies.
6 : : //
7 : : // THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
8 : : // REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
9 : : // AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
10 : : // INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
11 : : // LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
12 : : // OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
13 : : // PERFORMANCE OF THIS SOFTWARE.
14 : :
15 : : #ifndef _ISC_RESOLVER_CALLBACK_H
16 : : #define _ISC_RESOLVER_CALLBACK_H 1
17 : :
18 : : #include <asiodns/dns_server.h>
19 : : #include <dns/message.h>
20 : :
21 : : #include <resolve/resolver_interface.h>
22 : :
23 : : namespace isc {
24 : : namespace resolve {
25 : :
26 : : /// \short Standard Callback for sendQuery for DNSServer instances
27 : : ///
28 : : /// This is a standard ResolverInterface::Callback implementation
29 : : /// that is used by Resolver; when RunningQuery finishes and has either
30 : : /// some data or an error, DNSServer::resume() will be called.
31 : : ///
32 : : /// This class will ignore the response MessagePtr in the callback,
33 : : /// as the server itself should also have a reference.
34 : : class ResolverCallbackServer : public ResolverInterface::Callback {
35 : : public:
36 : : ResolverCallbackServer(asiodns::DNSServer* server) :
37 [ + - ]: 4 : server_(server->clone()) {}
[ + - + - ]
38 [ + - ][ + - ]: 4 : ~ResolverCallbackServer() { delete server_; };
[ # # ][ # # ]
39 : :
40 : : void success(const isc::dns::MessagePtr response);
41 : : void failure();
42 : :
43 : : private:
44 : : asiodns::DNSServer* server_;
45 : : };
46 : :
47 : : } //namespace resolve
48 : : } //namespace isc
49 : :
50 : : #endif // ISC_RESOLVER_CALLBACK_H_
|