resolver_callback.cc 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. #include <resolve/resolver_callback.h>
  15. namespace isc {
  16. namespace resolve {
  17. void
  18. ResolverCallbackServer::callback(bool result) {
  19. server_->resume(result);
  20. delete server_;
  21. delete this;
  22. }
  23. void
  24. ResolverCallbackDirect::callback(bool result)
  25. {
  26. // simply return with the first rrset from answer right now
  27. if (result &&
  28. answer_message_->getRcode() == isc::dns::Rcode::NOERROR() &&
  29. answer_message_->getRRCount(isc::dns::Message::SECTION_ANSWER) > 0) {
  30. /*
  31. std::cout << *answer_message_ << std::endl;
  32. isc::dns::RRsetIterator rrsi = answer_message_->beginSection(isc::dns::Message::SECTION_ANSWER);
  33. const isc::dns::RRsetPtr result = *rrsi;
  34. callback_->success(result);
  35. */
  36. callback_->success(answer_message_);
  37. } else {
  38. callback_->failure();
  39. }
  40. // once called back we don't need ourselves anymore
  41. delete this;
  42. }
  43. } // namespace resolve
  44. } // namespace isc