resolver_callback.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. #ifndef ISC_RESOLVER_CALLBACK_H
  15. #define ISC_RESOLVER_CALLBACK_H 1
  16. #include <asiodns/dns_server.h>
  17. #include <dns/message.h>
  18. #include <resolve/resolver_interface.h>
  19. namespace isc {
  20. namespace resolve {
  21. /// \short Standard Callback for sendQuery for DNSServer instances
  22. ///
  23. /// This is a standard ResolverInterface::Callback implementation
  24. /// that is used by Resolver; when RunningQuery finishes and has either
  25. /// some data or an error, DNSServer::resume() will be called.
  26. ///
  27. /// This class will ignore the response MessagePtr in the callback,
  28. /// as the server itself should also have a reference.
  29. class ResolverCallbackServer : public ResolverInterface::Callback {
  30. public:
  31. ResolverCallbackServer(asiodns::DNSServer* server) :
  32. server_(server->clone()) {}
  33. ~ResolverCallbackServer() { delete server_; };
  34. void success(const isc::dns::MessagePtr response);
  35. void failure();
  36. private:
  37. asiodns::DNSServer* server_;
  38. };
  39. } //namespace resolve
  40. } //namespace isc
  41. #endif // ISC_RESOLVER_CALLBACK_H_