[svn] commit: r3173 - in /branches/trac232/src/lib: datasrc/ datasrc/python/ datasrc/tests/ dns/ dns/tests/

BIND 10 source code commits bind10-changes at lists.isc.org
Mon Oct 11 07:37:49 UTC 2010


Author: jelte
Date: Mon Oct 11 07:37:48 2010
New Revision: 3173

Log:
added a new type RRsetContainer, which stores a list of RRsetPtrs you can iterate over (it is mostly taken from RRsetList, and current implementation is not much more than a wrapper around an std::vector, though we can expand it later should the need arise).

Use this instead of the existing RRsetList in the replaceZone function.

Reverted changes originally made to RRsetList to make it useful for this purpose

Added:
    branches/trac232/src/lib/dns/rrsetcontainer.cc
    branches/trac232/src/lib/dns/rrsetcontainer.h
    branches/trac232/src/lib/dns/tests/rrsetcontainer_unittest.cc
Modified:
    branches/trac232/src/lib/datasrc/data_source.cc
    branches/trac232/src/lib/datasrc/data_source.h
    branches/trac232/src/lib/datasrc/python/libdata_source_python.cc
    branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc
    branches/trac232/src/lib/datasrc/sqlite3_datasrc.h
    branches/trac232/src/lib/datasrc/tests/sqlite3_unittest.cc
    branches/trac232/src/lib/dns/Makefile.am
    branches/trac232/src/lib/dns/rrsetlist.cc
    branches/trac232/src/lib/dns/rrsetlist.h
    branches/trac232/src/lib/dns/tests/Makefile.am
    branches/trac232/src/lib/dns/tests/rrsetlist_unittest.cc

Modified: branches/trac232/src/lib/datasrc/data_source.cc
==============================================================================
--- branches/trac232/src/lib/datasrc/data_source.cc (original)
+++ branches/trac232/src/lib/datasrc/data_source.cc Mon Oct 11 07:37:48 2010
@@ -37,6 +37,7 @@
 #include <dns/rdataclass.h>
 #include <dns/rrset.h>
 #include <dns/rrsetlist.h>
+#include <dns/rrsetcontainer.h>
 #include <dns/util/sha1.h>
 
 #include <cc/data.h>
@@ -1297,7 +1298,7 @@
 
 DataSrc::WriteResult
 DataSrc::replaceZone(DataSrcTransaction& transaction UNUSED_PARAM,
-                     const RRsetList& UNUSED_PARAM)
+                     const RRsetContainer& UNUSED_PARAM)
 {
     return (W_NOT_IMPLEMENTED);
 }
@@ -1487,8 +1488,8 @@
         // Not a SOA, then this must be an AXFR-type response
         //int zone_id = transaction.getData()->get("zone_id")->intValue();
         //delAll(zone_id);
-        RRsetList empty_list;
-        replaceZone(transaction, empty_list);
+        RRsetContainer empty;
+        replaceZone(transaction, empty);
         
         while (rrsets != end) {
             addRRset(transaction, *rrsets++);
@@ -1695,7 +1696,7 @@
 
 DataSrc::WriteResult
 MetaDataSrc::replaceZone(DataSrcTransaction& transaction UNUSED_PARAM,
-                         const isc::dns::RRsetList& rrset_list UNUSED_PARAM)
+                         const isc::dns::RRsetContainer& rrsets UNUSED_PARAM)
 {
     return (W_NOT_IMPLEMENTED);
 }

Modified: branches/trac232/src/lib/datasrc/data_source.h
==============================================================================
--- branches/trac232/src/lib/datasrc/data_source.h (original)
+++ branches/trac232/src/lib/datasrc/data_source.h Mon Oct 11 07:37:48 2010
@@ -38,6 +38,7 @@
 class RRType;
 class RRset;
 class RRsetList;
+class RRsetContainer;
 }
 
 namespace datasrc {
@@ -421,7 +422,7 @@
     /// \param transaction The transaction to perform the operations on
     /// \return W_SUCCESS on success
     virtual WriteResult replaceZone(DataSrcTransaction&  transaction,
-                                          const isc::dns::RRsetList& rrsets);
+                                    const isc::dns::RRsetContainer& rrsets);
     //@}
 
     /// \name High-level functions for writable data sources
@@ -566,7 +567,7 @@
                                        isc::dns::ConstRRsetPtr rrset);
     virtual WriteResult delZone(DataSrcTransaction&  transaction);
     virtual WriteResult replaceZone(DataSrcTransaction&  transaction,
-                                          const isc::dns::RRsetList& rrsets);
+                                    const isc::dns::RRsetContainer& rrsets);
     // end of writable data sources part
 private:
     std::vector<ConstDataSrcPtr> data_sources;

Modified: branches/trac232/src/lib/datasrc/python/libdata_source_python.cc
==============================================================================
--- branches/trac232/src/lib/datasrc/python/libdata_source_python.cc (original)
+++ branches/trac232/src/lib/datasrc/python/libdata_source_python.cc Mon Oct 11 07:37:48 2010
@@ -24,6 +24,7 @@
 #include <datasrc/sqlite3_datasrc.h>
 #include <dns/rcode.h>
 #include <dns/rrsetlist.h>
+#include <dns/rrsetcontainer.h>
 #include <dns/rrset.h>
 
 #include <boost/foreach.hpp>
@@ -928,7 +929,7 @@
                             "argument 2 of replace_zone() is not a List");
             return (NULL);
         }
-        isc::dns::RRsetList rrset_list;
+        isc::dns::RRsetContainer rrset_list;
         for (int i = 0; i < PyList_Size(rrset_list_obj); ++i) {
             PyObject* rrset_obj = PyList_GET_ITEM(rrset_list_obj, i);
             if (!PyRRset_Check(rrset_obj)) {

Modified: branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc
==============================================================================
--- branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc (original)
+++ branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc Mon Oct 11 07:37:48 2010
@@ -28,6 +28,7 @@
 #include <dns/rdataclass.h>
 #include <dns/rrset.h>
 #include <dns/rrsetlist.h>
+#include <dns/rrsetcontainer.h>
 
 #include <cc/data.h>
 
@@ -1121,7 +1122,7 @@
 
 DataSrc::WriteResult
 Sqlite3DataSrc::replaceZone(DataSrcTransaction& transaction,
-                            const isc::dns::RRsetList& rrsets)
+                            const isc::dns::RRsetContainer& rrsets)
 {
     if (transaction.getState() != DataSrcTransaction::RUNNING) {
         return DataSrc::W_ERROR;
@@ -1134,7 +1135,7 @@
         return result;
     }
 
-    RRsetList::const_iterator it = rrsets.begin();
+    RRsetContainer::const_iterator it = rrsets.begin();
     while (it != rrsets.end()) {
         result = addRRset(transaction, *it);
         if (result != DataSrc::W_SUCCESS) {

Modified: branches/trac232/src/lib/datasrc/sqlite3_datasrc.h
==============================================================================
--- branches/trac232/src/lib/datasrc/sqlite3_datasrc.h (original)
+++ branches/trac232/src/lib/datasrc/sqlite3_datasrc.h Mon Oct 11 07:37:48 2010
@@ -117,7 +117,7 @@
     WriteResult delRRset(DataSrcTransaction& transaction,
                                isc::dns::ConstRRsetPtr rrset);
     WriteResult replaceZone(DataSrcTransaction& transaction,
-                                           const isc::dns::RRsetList& rrset_list);
+                            const isc::dns::RRsetContainer& rrsets);
     WriteResult delZone(DataSrcTransaction& transaction);
 
 private:

Modified: branches/trac232/src/lib/datasrc/tests/sqlite3_unittest.cc
==============================================================================
--- branches/trac232/src/lib/datasrc/tests/sqlite3_unittest.cc (original)
+++ branches/trac232/src/lib/datasrc/tests/sqlite3_unittest.cc Mon Oct 11 07:37:48 2010
@@ -33,6 +33,7 @@
 #include <dns/rrtype.h>
 #include <dns/rdataclass.h>
 #include <dns/rrsetlist.h>
+#include <dns/rrsetcontainer.h>
 #include <cc/data.h>
 
 #include <datasrc/query.h>
@@ -983,7 +984,7 @@
     EXPECT_EQ(DataSrc::W_ERROR,
               data_source.addRRset(transaction, new_rrset));
     RRsetIterator rrset_it = RRsetIterator();
-    RRsetList empty_list;
+    RRsetContainer empty_list;
     EXPECT_EQ(DataSrc::W_ERROR,
               data_source.replaceZone(transaction, empty_list));
     EXPECT_EQ(DataSrc::W_ERROR,
@@ -1120,7 +1121,7 @@
     EXPECT_EQ(DataSrc::SUCCESS, find_flags);
     EXPECT_EQ(1, result_sets.size());
 
-    RRsetList empty_list;
+    RRsetContainer empty_list;
 
     // Replace them, roll back
     DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());

Modified: branches/trac232/src/lib/dns/Makefile.am
==============================================================================
--- branches/trac232/src/lib/dns/Makefile.am (original)
+++ branches/trac232/src/lib/dns/Makefile.am Mon Oct 11 07:37:48 2010
@@ -76,6 +76,7 @@
 libdns___la_SOURCES += rrparamregistry.h
 libdns___la_SOURCES += rrset.h rrset.cc
 libdns___la_SOURCES += rrsetlist.h rrsetlist.cc
+libdns___la_SOURCES += rrsetcontainer.h rrsetcontainer.cc
 libdns___la_SOURCES += rrttl.h rrttl.cc
 libdns___la_SOURCES += rrtype.cc
 libdns___la_SOURCES += question.h question.cc

Modified: branches/trac232/src/lib/dns/rrsetlist.cc
==============================================================================
--- branches/trac232/src/lib/dns/rrsetlist.cc (original)
+++ branches/trac232/src/lib/dns/rrsetlist.cc Mon Oct 11 07:37:48 2010
@@ -23,7 +23,6 @@
 #include <dns/rrclass.h>
 #include <dns/rrtype.h>
 #include <dns/rrset.h>
-#include <dns/name.h>
 #include <dns/rrsetlist.h>
 
 namespace isc {
@@ -31,8 +30,7 @@
 
 void
 RRsetList::addRRset(RRsetPtr rrsetptr) {
-    ConstRRsetPtr rrset_found = findRRset(rrsetptr->getName(),
-                                          rrsetptr->getType(),
+    ConstRRsetPtr rrset_found = findRRset(rrsetptr->getType(),
                                           rrsetptr->getClass());
     if (rrset_found != NULL) {
         isc_throw(DuplicateRRset, "RRset is being doubly added to RRsetList: "
@@ -51,19 +49,6 @@
 }
 
 RRsetPtr
-RRsetList::findRRset(const Name& name, const RRType& rrtype,
-                     const RRClass& rrclass) {
-    BOOST_FOREACH(RRsetPtr rrsetptr, rrsets_) {
-        if ((rrsetptr->getName().equals(name)) &&
-            (rrsetptr->getClass() == rrclass) &&
-            (rrsetptr->getType() == rrtype)) {
-            return rrsetptr;
-        }
-    }
-    return RRsetPtr();
-}
-
-RRsetPtr
 RRsetList::findRRset(const RRType& rrtype, const RRClass& rrclass) {
     BOOST_FOREACH(RRsetPtr rrsetptr, rrsets_) {
         if ((rrsetptr->getClass() == rrclass) &&

Modified: branches/trac232/src/lib/dns/rrsetlist.h
==============================================================================
--- branches/trac232/src/lib/dns/rrsetlist.h (original)
+++ branches/trac232/src/lib/dns/rrsetlist.h Mon Oct 11 07:37:48 2010
@@ -83,7 +83,6 @@
     RRsetList() {}
     void addRRset(RRsetPtr new_rrsetptr);
     void append(RRsetList& source);
-    RRsetPtr findRRset(const Name& name, const RRType& rrtype, const RRClass& rrclass);
     RRsetPtr findRRset(const RRType& rrtype, const RRClass& rrclass);
 
     typedef RRsetListIterator<std::vector<RRsetPtr>::iterator,

Modified: branches/trac232/src/lib/dns/tests/Makefile.am
==============================================================================
--- branches/trac232/src/lib/dns/tests/Makefile.am (original)
+++ branches/trac232/src/lib/dns/tests/Makefile.am Mon Oct 11 07:37:48 2010
@@ -38,6 +38,7 @@
 run_unittests_SOURCES += rdata_nsec3param_unittest.cc
 run_unittests_SOURCES += rdata_rrsig_unittest.cc
 run_unittests_SOURCES += rrset_unittest.cc rrsetlist_unittest.cc
+run_unittests_SOURCES += rrsetcontainer_unittest.cc
 run_unittests_SOURCES += question_unittest.cc
 run_unittests_SOURCES += rrparamregistry_unittest.cc
 run_unittests_SOURCES += message_unittest.cc

Modified: branches/trac232/src/lib/dns/tests/rrsetlist_unittest.cc
==============================================================================
--- branches/trac232/src/lib/dns/tests/rrsetlist_unittest.cc (original)
+++ branches/trac232/src/lib/dns/tests/rrsetlist_unittest.cc Mon Oct 11 07:37:48 2010
@@ -110,8 +110,7 @@
     setupList(list);
     RRsetPtr cname(new RRset(Name("another.example.com"), RRClass::IN(),
                              RRType::CNAME(), example_ttl));
-    //EXPECT_THROW(list.addRRset(cname), DuplicateRRset);
-    EXPECT_NO_THROW(list.addRRset(cname));
+    EXPECT_THROW(list.addRRset(cname), DuplicateRRset);
 }
 
 void
@@ -119,7 +118,7 @@
                 const RRType& rrtype, const RRClass& rrclass,
                 const RRTTL& rrttl)
 {
-    RRsetPtr rrset = list.findRRset(name, rrtype, rrclass);;
+    RRsetPtr rrset = list.findRRset(rrtype, rrclass);;
     EXPECT_EQ(name, rrset->getName());
     EXPECT_EQ(rrtype, rrset->getType());
     EXPECT_EQ(rrclass, rrset->getClass());
@@ -150,7 +149,7 @@
     list.addRRset(a);
 
     RdataIteratorPtr it =
-        list.findRRset(Name("example.com"), RRType::A(), RRClass::IN())->getRdataIterator();
+        list.findRRset(RRType::A(), RRClass::IN())->getRdataIterator();
     it->first();
     EXPECT_FALSE(it->isLast());
     EXPECT_EQ("192.0.2.1", it->getCurrent().toText());




More information about the bind10-changes mailing list