[svn] commit: r810 - in /branches/each-ds/src: bin/auth/ lib/auth/cpp/ lib/dns/cpp/rdata/generic/

BIND 10 source code commits bind10-changes at lists.isc.org
Fri Feb 12 21:28:36 UTC 2010


Author: each
Date: Fri Feb 12 21:28:36 2010
New Revision: 810

Log:
checkpoint:
 - moved DSResult enum into AbstractDataSrc class
 - s/runQuery/doQuery/
 - doQuery() now returns void
 - moved lib/auth into namespace isc::auth
 - minor style fixes

Modified:
    branches/each-ds/src/bin/auth/auth_srv.cc
    branches/each-ds/src/bin/auth/auth_srv.h
    branches/each-ds/src/lib/auth/cpp/data_source.cc
    branches/each-ds/src/lib/auth/cpp/data_source.h
    branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.cc
    branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.h
    branches/each-ds/src/lib/auth/cpp/data_source_static.cc
    branches/each-ds/src/lib/auth/cpp/data_source_static.h
    branches/each-ds/src/lib/auth/cpp/query.cc
    branches/each-ds/src/lib/auth/cpp/query.h
    branches/each-ds/src/lib/dns/cpp/rdata/generic/mx_15.cc
    branches/each-ds/src/lib/dns/cpp/rdata/generic/mx_15.h

Modified: branches/each-ds/src/bin/auth/auth_srv.cc
==============================================================================
--- branches/each-ds/src/bin/auth/auth_srv.cc (original)
+++ branches/each-ds/src/bin/auth/auth_srv.cc Fri Feb 12 21:28:36 2010
@@ -43,6 +43,7 @@
 
 using namespace std;
 
+using namespace isc::auth;
 using namespace isc::dns;
 using namespace isc::dns::rdata;
 using namespace isc::data;
@@ -114,7 +115,7 @@
 
         // do the DataSource call here
         Query q = Query(msg, false);
-        data_src.runQuery(q);
+        data_src.doQuery(q);
 
         OutputBuffer obuffer(4096);
         MessageRenderer renderer(obuffer);

Modified: branches/each-ds/src/bin/auth/auth_srv.h
==============================================================================
--- branches/each-ds/src/bin/auth/auth_srv.h (original)
+++ branches/each-ds/src/bin/auth/auth_srv.h Fri Feb 12 21:28:36 2010
@@ -31,7 +31,7 @@
     isc::data::ElementPtr updateConfig(isc::data::ElementPtr config);
 private:
 
-    isc::dns::MetaDataSrc data_src;
+    isc::auth::MetaDataSrc data_src;
     int sock;
 };
 

Modified: branches/each-ds/src/lib/auth/cpp/data_source.cc
==============================================================================
--- branches/each-ds/src/lib/auth/cpp/data_source.cc (original)
+++ branches/each-ds/src/lib/auth/cpp/data_source.cc Fri Feb 12 21:28:36 2010
@@ -10,8 +10,10 @@
 
 #include "data_source.h"
 
+using namespace isc::dns;
+
 namespace isc {
-namespace dns {
+namespace auth {
 
 static void
 getAdditional(Query& q, RRsetPtr rrset) {
@@ -52,9 +54,9 @@
     }
 }
 
-DSResult
-DataSrc::runQuery(Query q) {
-    DSResult result;
+void
+DataSrc::doQuery(Query q) {
+    Result result;
     Message& m = q.message();
 
     while (!q.tasks().empty()) {
@@ -94,8 +96,8 @@
                     case QUERY_FOLLOWCNAME:
                         getAdditional(q, data[0]);
                         if (q.tasks().empty()) {
-                            // No additional processing is needed;
-                            // add authority section.
+                            // No additional processing is needed, so now
+                            // add the authority section.
                             if (data[0]->getType() != RRType::NS()) {
                                 QueryTask qt(Name(*match.closestName()),
                                                   task.qclass, RRType::NS(),
@@ -110,7 +112,7 @@
                         // If no more work items, add authority section now
                         if (q.tasks().empty()) {
                             q.setStatus(QUERY_SUCCESS);
-                            return (SUCCESS);
+                            return;
                         }
                         continue;
 
@@ -118,7 +120,7 @@
                         getAdditional(q, data[0]);
                         if (q.tasks().empty()) {
                             q.setStatus(QUERY_SUCCESS);
-                            return (SUCCESS);
+                            return;
                         }
                         continue;
 
@@ -126,7 +128,7 @@
                         dns_throw (Unexpected, "unexpected query status");
                 }
 
-            case CNAME:
+            case CNAME_FOUND:
                 if (data[0]->getType() != RRType::CNAME()) {
                     dns_throw (Unexpected, "unexpected query status");
                 }
@@ -161,7 +163,7 @@
                                            data, sigs);
                     if (result != SUCCESS) {
                         m.setRcode(Rcode::SERVFAIL());
-                        return (ERROR);
+                        return;
                     }
 
                     m.addRRset(Section::AUTHORITY(), data[0]);
@@ -170,7 +172,7 @@
                     }
 
                     q.setStatus(QUERY_FAIL);
-                    return (result);
+                    return;
                 }
                 continue;
 
@@ -178,7 +180,7 @@
                 if (q.status() == QUERY_GETANSWER) {
                     m.setRcode(Rcode::REFUSED());
                     q.setStatus(QUERY_FAIL);
-                    return (result);
+                    return;
                 }
                 continue;
 
@@ -186,11 +188,9 @@
             case ERROR:
                 m.setRcode(Rcode::SERVFAIL());
                 q.setStatus(QUERY_FAIL);
-                return (result);
+                return;
         }
     }
-
-    return (result);
 };
 
 

Modified: branches/each-ds/src/lib/auth/cpp/data_source.h
==============================================================================
--- branches/each-ds/src/lib/auth/cpp/data_source.h (original)
+++ branches/each-ds/src/lib/auth/cpp/data_source.h Fri Feb 12 21:28:36 2010
@@ -23,18 +23,10 @@
 #include <auth/query.h>
 #include <iostream>
 
+using namespace isc::dns;
+
 namespace isc {
-namespace dns {
-
-enum DSResult {
-    SUCCESS,
-    NOT_IMPLEMENTED,
-    ERROR,
-    CNAME,
-    ZONE_NOT_FOUND,
-    NAME_NOT_FOUND,
-    TYPE_NOT_FOUND
-};
+namespace auth {
 
 class DataSrc;
 class NameMatch;
@@ -43,15 +35,27 @@
 
 class AbstractDataSrc {
 public:
+    enum Result {
+        SUCCESS,
+        ERROR,
+        NOT_IMPLEMENTED,
+        CNAME_FOUND,
+        ZONE_NOT_FOUND,
+        NAME_NOT_FOUND,
+        TYPE_NOT_FOUND
+    };
+
     virtual ~AbstractDataSrc() {};
 
     // 'High-level' methods.  These will be implemented by the
     // general DataSrc class, but MAY be overwritten by subclasses.
-    virtual DSResult runQuery(Query query) = 0;
+    virtual void doQuery(Query query) = 0;
+    // virtual void doUpdate(Update update) = 0;
+    // virtual void doXfr(Query query) = 0;
 
     // Mandatory 'low-level' methods: These will NOT be implemented by
     // the general DataSrc class; subclasses MUST implement them.
-    virtual DSResult findRRset(const Query& q,
+    virtual Result findRRset(const Query& q,
                                const Name& qname,
                                const RRClass& qclass,
                                const RRType& qtype,
@@ -62,8 +66,8 @@
 
     // Optional 'low-level' methods.  These will have stub implementations
     // in the general DataSrc class but MAY be overwritten by subclasses
-    virtual DSResult init() = 0;
-    virtual DSResult close() = 0;
+    virtual Result init() = 0;
+    virtual Result close() = 0;
 };
 
 // Base class for a DNS Data Source
@@ -73,21 +77,21 @@
     DataSrc(const RRClass& c) : rrclass(c) {}
     virtual ~DataSrc() {};
 
-    DSResult runQuery(Query q);
-
-    virtual DSResult findRRset(const Query& q,
+    void doQuery(Query q);
+
+    virtual Result findRRset(const Query& q,
                                const Name& qname,
                                const RRClass& qclass,
                                const RRType& qtype,
                                RRsetList& target,
                                RRsetList& sigs) const = 0;
 
-    virtual DSResult findAddrs(const Query& q,
+    virtual Result findAddrs(const Query& q,
                                const Name& qname,
                                const RRClass& qclass,
                                RRsetList& target,
                                RRsetList& sigs) const {
-        DSResult r;
+        Result r;
         r = findRRset(q, qname, qclass, RRType::A(), target, sigs);
         if (r != SUCCESS) {
             return (r);
@@ -102,8 +106,8 @@
     const RRClass& getClass() const { return rrclass; }
     void setClass(RRClass& c) { rrclass = c; }
 
-    DSResult init() { return NOT_IMPLEMENTED; }
-    DSResult close() { return NOT_IMPLEMENTED; }
+    Result init() { return NOT_IMPLEMENTED; }
+    Result close() { return NOT_IMPLEMENTED; }
 
 private:
     RRClass rrclass;
@@ -139,13 +143,13 @@
     // Instead, use findClosestEnclosure() to get a pointer to the best
     // concrete data source, then send all queries directly there.
 
-    DSResult findRRset(const Query& q, const Name& qname,
+    Result findRRset(const Query& q, const Name& qname,
                        const RRClass& qclass, const RRType& qtype,
                        RRsetList& target, RRsetList& sigs) const {
         return (NOT_IMPLEMENTED);
     }
 
-    DSResult findAddrs(const Query& q,
+    Result findAddrs(const Query& q,
                        const Name& qname, const RRClass& qclass,
                        RRsetList& target, RRsetList& sigs) const {
         return (NOT_IMPLEMENTED);

Modified: branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.cc
==============================================================================
--- branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.cc (original)
+++ branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.cc Fri Feb 12 21:28:36 2010
@@ -7,10 +7,11 @@
 #include <iostream>
 
 using namespace std;
+using namespace isc::dns;
 using namespace isc::dns::rdata;
 
 namespace isc {
-namespace dns {
+namespace auth {
 
 //
 //  Prepare a statement.  Can call release() or sqlite3_finalize()
@@ -306,7 +307,7 @@
     close();
 }
 
-DSResult
+DataSrc::Result
 Sqlite3DataSrc::init()
 {
     try {
@@ -334,7 +335,7 @@
     match.update(*this, Name(position));
 }
 
-DSResult
+DataSrc::Result
 Sqlite3DataSrc::findRRset(const Query& q,
                           const Name& qname,
                           const RRClass& qclass,
@@ -349,7 +350,7 @@
     } else if (rows == 0) {
         return (NAME_NOT_FOUND);
     } else if (found_cname) {
-        return (CNAME);
+        return (CNAME_FOUND);
     } else {
         return (SUCCESS);
     }
@@ -375,11 +376,11 @@
     checkAndSetupSchema();
 }
 
-DSResult
+DataSrc::Result
 Sqlite3DataSrc::close(void)
 {
     if (db == NULL) {
-        return SUCCESS;
+        return (SUCCESS);
     }
 
     if (q_zone != NULL) {
@@ -400,8 +401,8 @@
     sqlite3_close(db);
 
     db = NULL;
-    return SUCCESS;
-}
-
-}
-}
+    return (SUCCESS);
+}
+
+}
+}

Modified: branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.h
==============================================================================
--- branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.h (original)
+++ branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.h Fri Feb 12 21:28:36 2010
@@ -21,8 +21,10 @@
 
 #include "data_source.h"
 
+using namespace isc::dns;
+
 namespace isc {
-namespace dns {
+namespace auth {
 
 class Sqlite3DataSrc : public DataSrc {
 public:
@@ -31,14 +33,14 @@
 
     virtual void findClosestEnclosure(NameMatch& match) const;
 
-    virtual DSResult findRRset(const Query& q,
-                               const Name& qname,
-                               const RRClass& qclass,
-                               const RRType& qtype,
-                               RRsetList& target, RRsetList& sigs) const;
+    virtual Result findRRset(const Query& q,
+                             const Name& qname,
+                             const RRClass& qclass,
+                             const RRType& qtype,
+                             RRsetList& target, RRsetList& sigs) const;
 
-    virtual DSResult init();
-    virtual DSResult close();
+    virtual Result init();
+    virtual Result close();
 
 private:
     void open(const std::string& name);

Modified: branches/each-ds/src/lib/auth/cpp/data_source_static.cc
==============================================================================
--- branches/each-ds/src/lib/auth/cpp/data_source_static.cc (original)
+++ branches/each-ds/src/lib/auth/cpp/data_source_static.cc Fri Feb 12 21:28:36 2010
@@ -12,10 +12,11 @@
 
 #include <iostream>
 
+using namespace isc::dns;
+using namespace isc::dns::rdata;
+
 namespace isc {
-namespace dns {
-
-using namespace isc::dns::rdata;
+namespace auth {
 
 StaticDataSrc::StaticDataSrc() : authors_name("authors.bind"),
                                  version_name("version.bind")
@@ -67,7 +68,7 @@
     }
 }
 
-DSResult
+DataSrc::Result
 StaticDataSrc::findRRset(const Query& q,
                          const Name& qname,
                          const RRClass& qclass,
@@ -78,26 +79,26 @@
     if (qname == version_name &&
         qclass == version->getClass() && qtype == version->getType()) {
         target.push_back(version);
-        return SUCCESS;
+        return (SUCCESS);
     } else if (qname == version_name &&
                qclass == version_ns->getClass() &&
                qtype == version_ns->getType()) {
         target.push_back(version_ns);
-        return SUCCESS;
+        return (SUCCESS);
     } else if (qname == authors_name &&
                qclass == authors->getClass() && qtype == authors->getType()) {
         target.push_back(authors);
-        return SUCCESS;
+        return (SUCCESS);
     } else if (qname == authors_name &&
                qclass == authors_ns->getClass() &&
                qtype == authors_ns->getType()) {
         target.push_back(authors_ns);
-        return SUCCESS;
+        return (SUCCESS);
     }
 
     // XXX: this is not 100% correct.
     // We should also support the nodata/noerror case.
-    return NAME_NOT_FOUND;
+    return (NAME_NOT_FOUND);
 }
 
 }

Modified: branches/each-ds/src/lib/auth/cpp/data_source_static.h
==============================================================================
--- branches/each-ds/src/lib/auth/cpp/data_source_static.h (original)
+++ branches/each-ds/src/lib/auth/cpp/data_source_static.h Fri Feb 12 21:28:36 2010
@@ -27,8 +27,10 @@
 
 #include "data_source.h"
 
+using namespace isc::dns;
+
 namespace isc {
-namespace dns {
+namespace auth {
 
 class StaticDataSrc : public DataSrc {
 public:
@@ -37,15 +39,15 @@
 
     void findClosestEnclosure(NameMatch& match) const;
 
-    DSResult findRRset(const Query& q,
-                       const Name& qname,
-                       const RRClass& qclass,
-                       const RRType& qtype,
-                       RRsetList& target,
-                       RRsetList& sigs) const;
+    Result findRRset(const Query& q,
+                     const Name& qname,
+                     const RRClass& qclass,
+                     const RRType& qtype,
+                     RRsetList& target,
+                     RRsetList& sigs) const;
 
-    DSResult init() { return SUCCESS; };
-    DSResult close() { return SUCCESS; } ;
+    Result init() { return (SUCCESS); };
+    Result close() { return (SUCCESS); } ;
 
 private:
     const Name authors_name;

Modified: branches/each-ds/src/lib/auth/cpp/query.cc
==============================================================================
--- branches/each-ds/src/lib/auth/cpp/query.cc (original)
+++ branches/each-ds/src/lib/auth/cpp/query.cc Fri Feb 12 21:28:36 2010
@@ -24,7 +24,7 @@
 #include "query.h"
 
 namespace isc {
-namespace dns {
+namespace auth {
 
 }
 }

Modified: branches/each-ds/src/lib/auth/cpp/query.h
==============================================================================
--- branches/each-ds/src/lib/auth/cpp/query.h (original)
+++ branches/each-ds/src/lib/auth/cpp/query.h Fri Feb 12 21:28:36 2010
@@ -26,8 +26,10 @@
 #include <dns/rrclass.h>
 #include <dns/rrtype.h>
 
+using namespace isc::dns;
+
 namespace isc {
-namespace dns {
+namespace auth {
 
 enum QueryStatus {
     QUERY_GETANSWER,

Modified: branches/each-ds/src/lib/dns/cpp/rdata/generic/mx_15.cc
==============================================================================
--- branches/each-ds/src/lib/dns/cpp/rdata/generic/mx_15.cc (original)
+++ branches/each-ds/src/lib/dns/cpp/rdata/generic/mx_15.cc Fri Feb 12 21:28:36 2010
@@ -86,5 +86,17 @@
     return (compareNames(mxname_, other_mx.mxname_));
 }
 
+const Name&
+MX::getMXName() const
+{
+    return (mxname_);
+}
+
+const uint16_t
+MX::getMXPref() const
+{
+    return (preference_);
+}
+
 // END_RDATA_NAMESPACE
 // END_ISC_NAMESPACE

Modified: branches/each-ds/src/lib/dns/cpp/rdata/generic/mx_15.h
==============================================================================
--- branches/each-ds/src/lib/dns/cpp/rdata/generic/mx_15.h (original)
+++ branches/each-ds/src/lib/dns/cpp/rdata/generic/mx_15.h Fri Feb 12 21:28:36 2010
@@ -36,6 +36,12 @@
 
     explicit MX(uint16_t preference, const Name& mxname);
 
+    ///
+    /// Specialized methods
+    ///
+    const Name& getMXName() const;
+    const uint16_t getMXPref() const;
+
 private:
     /// Note: this is a prototype version; we may reconsider
     /// this representation later.




More information about the bind10-changes mailing list