|
@@ -37,6 +37,8 @@
|
|
|
#include <asiolink/internal/tcpdns.h>
|
|
|
#include <asiolink/internal/udpdns.h>
|
|
|
|
|
|
+#include <resolve/resolve.h>
|
|
|
+
|
|
|
#include <log/dummylog.h>
|
|
|
|
|
|
using namespace asio;
|
|
@@ -355,7 +357,7 @@ private:
|
|
|
|
|
|
// Server to notify when we succeed or fail
|
|
|
//shared_ptr<DNSServer> server_;
|
|
|
- AbstractResolverCallback* resolvercallback_;
|
|
|
+ isc::resolve::AbstractResolverCallback* resolvercallback_;
|
|
|
|
|
|
/*
|
|
|
* TODO Do something more clever with timeouts. In the long term, some
|
|
@@ -478,7 +480,7 @@ public:
|
|
|
shared_ptr<AddressVector> upstream_root,
|
|
|
OutputBufferPtr buffer,
|
|
|
//DNSServer* server,
|
|
|
- AbstractResolverCallback* cb,
|
|
|
+ isc::resolve::AbstractResolverCallback* cb,
|
|
|
int timeout,
|
|
|
unsigned retries) :
|
|
|
io_(io),
|
|
@@ -566,8 +568,9 @@ RecursiveQuery::sendQuery(const isc::dns::QuestionPtr& question,
|
|
|
MessagePtr answer_message(new Message(Message::RENDER));
|
|
|
answer_message->setOpcode(isc::dns::Opcode::QUERY());
|
|
|
OutputBufferPtr buffer(new OutputBuffer(0));
|
|
|
- ResolverCallbackDirect* rcd = new ResolverCallbackDirect(callback,
|
|
|
- answer_message);
|
|
|
+ isc::resolve::ResolverCallbackDirect* rcd =
|
|
|
+ new isc::resolve::ResolverCallbackDirect(callback,
|
|
|
+ answer_message);
|
|
|
|
|
|
// It will delete itself when it is done
|
|
|
new RunningQuery(io, *question, answer_message, upstream_,
|
|
@@ -586,39 +589,14 @@ RecursiveQuery::sendQuery(const Question& question,
|
|
|
// we're only going to handle UDP.
|
|
|
asio::io_service& io = dns_service_.get_io_service();
|
|
|
|
|
|
- ResolverCallbackServer* crs = new ResolverCallbackServer(server);
|
|
|
+ isc::resolve::ResolverCallbackServer* crs =
|
|
|
+ new isc::resolve::ResolverCallbackServer(server);
|
|
|
|
|
|
// It will delete itself when it is done
|
|
|
new RunningQuery(io, question, answer_message, upstream_,
|
|
|
upstream_root_, buffer, crs, timeout_, retries_);
|
|
|
}
|
|
|
|
|
|
-void
|
|
|
-ResolverCallbackServer::callback(bool result) {
|
|
|
- server_->resume(result);
|
|
|
- delete server_;
|
|
|
- delete this;
|
|
|
-}
|
|
|
-
|
|
|
-void
|
|
|
-ResolverCallbackDirect::callback(bool result)
|
|
|
-{
|
|
|
- // simply return with the first rrset from answer right now
|
|
|
- if (result &&
|
|
|
- answer_message_->getRcode() == isc::dns::Rcode::NOERROR() &&
|
|
|
- answer_message_->getRRCount(isc::dns::Message::SECTION_ANSWER) > 0) {
|
|
|
- std::cout << *answer_message_ << std::endl;
|
|
|
- isc::dns::RRsetIterator rrsi = answer_message_->beginSection(isc::dns::Message::SECTION_ANSWER);
|
|
|
- const isc::dns::RRsetPtr result = *rrsi;
|
|
|
- callback_->success(result);
|
|
|
- } else {
|
|
|
- callback_->failure();
|
|
|
- }
|
|
|
- // once called back we don't need ourselves anymore
|
|
|
- delete this;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
class IntervalTimerImpl {
|
|
|
private:
|
|
|
// prohibit copy
|