[svn] commit: r579 - in /experiments/each-query/src/lib/auth/cpp: query.cc query.h
BIND 10 source code commits
bind10-changes at lists.isc.org
Thu Jan 28 01:29:21 UTC 2010
Author: each
Date: Thu Jan 28 01:29:21 2010
New Revision: 579
Log:
checkpoint
Modified:
experiments/each-query/src/lib/auth/cpp/query.cc
experiments/each-query/src/lib/auth/cpp/query.h
Modified: experiments/each-query/src/lib/auth/cpp/query.cc
==============================================================================
--- experiments/each-query/src/lib/auth/cpp/query.cc (original)
+++ experiments/each-query/src/lib/auth/cpp/query.cc Thu Jan 28 01:29:21 2010
@@ -21,7 +21,7 @@
#include <cc/cpp/data.h>
-#include "data_source.h"
+#include "query.h"
namespace isc {
namespace dns {
Modified: experiments/each-query/src/lib/auth/cpp/query.h
==============================================================================
--- experiments/each-query/src/lib/auth/cpp/query.h (original)
+++ experiments/each-query/src/lib/auth/cpp/query.h Thu Jan 28 01:29:21 2010
@@ -19,50 +19,65 @@
#include <queue>
-#include "name.h"
-#include "rrset.h"
-#include "data_source.h"
+#include <dns/cpp/exceptions.h>
+#include <dns/cpp/name.h>
+#include <dns/cpp/rrset.h>
+#include <dns/cpp/rrclass.h>
+#include <dns/cpp/rrtype.h>
namespace isc {
namespace dns {
enum QueryResult { success, incomplete, not_found };
+///
+/// \brief exception to throw if a DNS Message is malformed
+///
+class MalformedMessage : public Exception {
+public:
+ MalformedMessage(const char* file, size_t line, const char* what) :
+ isc::dns::Exception(file, line, what) {}
+};
+
// An individual task to be carried out by the query logic
class QueryTask {
public:
- QueryTask(const Name& n, const RRClass& c, const RRType& t,
- const SectionCode s) {
- qname = n;
- qclass = c;
- qtype = t;
+ QueryTask(Name& n, RRClass& c, RRType& t, SectionCode s) :
+ qname(n), qclass(c), qtype(t)
+ {
section = s;
}
virtual ~QueryTask();
- const Name& qname;
- const RRlass& qclass;
- const RRType& qtype;
- const SectionCode section;
+ Name& qname;
+ RRClass& qclass;
+ RRType& qtype;
+ SectionCode section;
};
// Data Source query
class Query {
public:
Query(Message& m, bool dnssec) {
- _message = m;
- _want_additional = true;
- _want_dnssec = dnssec;
+ message_ = m;
+ want_additional = true;
+ want_dnssec = dnssec;
_result = incomplete;
+ // Check message formatting
+ QuestionIterator qid = message_.beginQuestion();
+ qid++;
+ if (qid != message_.endQuestion())
+ dns_throw(MalformedMessage, "too many questions");
+
// Populate the query tasks queue with the initial question
- QuestionPtr query = *_message.beginQuestion();
- _qname = query->getName();
- _qclass = query->getClass();
- _qtype = query->getType();
- _qtasks = new std::queue<QueryTask>;
- _qtasks.push(new QueryTask(_qname, _qclass, _qtype, answer));
+ QuestionPtr query = *message_.beginQuestion();
+ // qname_ = query->getName();
+ qclass_ = query->getClass();
+ // qtype_ = query->getType();
+ // querytasks = new std::queue<QueryTask>;
+ // querytasks.push(new QueryTask(qname_, qclass_, qtype_, answer));
};
virtual ~Query() {}
@@ -70,19 +85,20 @@
// wantAdditional() == true indicates that additional-section data
// should be looked up while processing this query. false indicates
// that we're only interested in answer-section data
- bool wantAdditional() { return _want_additional; }
- void setWantAdditional(bool d) { _want_additional = d; }
+ bool wantAdditional() { return want_additional; }
+ void setWantAdditional(bool d) { want_additional = d; }
// wantDnssec() == true indicates that DNSSEC data should be retrieved
// from the data source when this query is being processed
- bool wantDnssec() { return _want_dnssec; }
- void setWantDnssec(bool d) { _want_dnssec = d; }
+ bool wantDnssec() { return want_dnssec; }
+ void setWantDnssec(bool d) { want_dnssec = d; }
- Name& qname() { return _qname; }
- RRClass& qclass() { return _qclass; }
- RRType& qtype() { return _qtype; }
- Message& message() { return _message; }
- std::queue<QueryTask>& tasks() { return _qtasks; }
+ const Name& qname() { return qname_; }
+ const RRClass& qclass() { return qclass_; }
+ const RRType& qtype() { return qtype_; }
+
+ Message& message() { return message_; }
+ std::queue<QueryTask>& tasks() { return querytasks; }
QueryResult result() { return _result; }
@@ -90,15 +106,15 @@
QueryResult _result;
private:
- const Name& _qname;
- const RRClass& _qclass;
- const RRType& _qtype;
+ Name qname_;
+ RRClass qclass_;
+ RRType qtype_;
- Message _message;
- std::queue<QueryTask>& _qtasks;
+ Message message_;
+ std::queue<QueryTask> querytasks;
- bool _want_additional;
- bool _want_dnssec;
+ bool want_additional;
+ bool want_dnssec;
};
}
More information about the bind10-changes
mailing list