[svn] commit: r2433 - in /branches/trac232/src: bin/auth/auth_srv.cc lib/datasrc/data_source.cc lib/datasrc/data_source.h lib/datasrc/sqlite3_datasrc.cc lib/datasrc/sqlite3_datasrc.h lib/datasrc/tests/sqlite3_unittest.cc

BIND 10 source code commits bind10-changes at lists.isc.org
Thu Jul 8 11:50:10 UTC 2010


Author: jelte
Date: Thu Jul  8 11:50:10 2010
New Revision: 2433

Log:
remove zone name from startTransaction (already provided in creation of transaction object)

Modified:
    branches/trac232/src/bin/auth/auth_srv.cc
    branches/trac232/src/lib/datasrc/data_source.cc
    branches/trac232/src/lib/datasrc/data_source.h
    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

Modified: branches/trac232/src/bin/auth/auth_srv.cc
==============================================================================
--- branches/trac232/src/bin/auth/auth_srv.cc (original)
+++ branches/trac232/src/bin/auth/auth_srv.cc Thu Jul  8 11:50:10 2010
@@ -345,7 +345,7 @@
         RdataPtr rdata = createRdata(rrset->getType(), rrset->getClass(), args->get("rr_rdata")->stringValue());
         rrset->addRdata(rdata);
         DataSrcTransaction transaction(datasource, zone_name);
-        DataSrc::Result r = datasource->startTransaction(transaction, zone_name);
+        DataSrc::Result r = datasource->startTransaction(transaction);
         if (r != DataSrc::SUCCESS) {
             return isc::config::createAnswer(r, "error starting transaction");
         }
@@ -395,7 +395,7 @@
             }
         }
         DataSrcTransaction transaction(datasource, zone_name);
-        DataSrc::Result r = datasource->startTransaction(transaction, zone_name);
+        DataSrc::Result r = datasource->startTransaction(transaction);
         if (r != DataSrc::SUCCESS) {
             return isc::config::createAnswer(r, "error starting transaction");
         }
@@ -482,7 +482,7 @@
         // hmz can't we assign RRTypes?
         if (datasource) {
             DataSrcTransaction transaction(datasource, zone_name);
-            DataSrc::Result r = datasource->startTransaction(transaction, zone_name);
+            DataSrc::Result r = datasource->startTransaction(transaction);
             if (r != DataSrc::SUCCESS) {
                 return isc::config::createAnswer(r, "error starting transaction");
             }
@@ -569,7 +569,7 @@
         DataSrc* datasource = (DataSrc*) match.bestDataSrc();
         if (datasource) {
             DataSrcTransaction transaction(datasource, zone_name);
-            DataSrc::Result result = datasource->startTransaction(transaction, zone_name);
+            DataSrc::Result result = datasource->startTransaction(transaction);
             if (result != DataSrc::SUCCESS) {
                 return isc::config::createAnswer(result, "error starting transaction");
             }

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 Thu Jul  8 11:50:10 2010
@@ -917,7 +917,7 @@
 }
 
 DataSrc::Result
-DataSrc::startTransaction(DataSrcTransaction& transaction UNUSED_PARAM, const Name& zonename UNUSED_PARAM)
+DataSrc::startTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
 {
     return NOT_IMPLEMENTED;
 }
@@ -1035,7 +1035,7 @@
 }
 
 DataSrc::Result
-MetaDataSrc::startTransaction(DataSrcTransaction& transaction UNUSED_PARAM, const Name& zonename UNUSED_PARAM)
+MetaDataSrc::startTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
 {
     return 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 Thu Jul  8 11:50:10 2010
@@ -163,10 +163,9 @@
 };
 
 // subclass this if you need specific data in your transaction model
-// TODO: probably needs private constructor, so that only startTransaction can make them
-//       also probably should keep a pointer to a datasource
-//       should this also provide the outwards interface?
-//
+// TODO: should this also provide the outwards interface?
+//       seems better to leave this as a pure data-holding class,
+//       with only setters and getters
 
 //class DataSrcTransaction {
 //public:
@@ -187,6 +186,7 @@
     void setState(states state) { _state = state; };
     isc::data::ElementPtr getData() { return _data; };
     void setData(isc::data::ElementPtr data) { _data = data; };
+    const isc::dns::Name getZoneName() { return _zone_name; };
 
 private:
     isc::data::ElementPtr _data;
@@ -271,7 +271,7 @@
     virtual Result delZone(DataSrcTransaction&  transaction);
     virtual Result replaceZone(DataSrcTransaction&  transaction,
                                isc::dns::RRsetList& rrsets);
-    virtual Result startTransaction(DataSrcTransaction&  transaction, const isc::dns::Name& zonename);
+    virtual Result startTransaction(DataSrcTransaction&  transaction);
     virtual Result commitTransaction(DataSrcTransaction&  transaction);
     virtual Result rollbackTransaction(DataSrcTransaction&  transaction);
     virtual Result doIXFR(DataSrcTransaction&  transaction,
@@ -351,7 +351,7 @@
     // Writable data sources
     //
     // see comments at DataSrc
-    virtual Result startTransaction(DataSrcTransaction&  transaction, const isc::dns::Name& zonename);
+    virtual Result startTransaction(DataSrcTransaction&  transaction);
     virtual Result commitTransaction(DataSrcTransaction&  transaction);
     virtual Result rollbackTransaction(DataSrcTransaction&  transaction);
     

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 Thu Jul  8 11:50:10 2010
@@ -779,15 +779,19 @@
 }
 
 DataSrc::Result
-Sqlite3DataSrc::startTransaction(DataSrcTransaction& transaction, const Name& zonename)
+Sqlite3DataSrc::startTransaction(DataSrcTransaction& transaction)
 {
     if (transaction.getState() != DataSrcTransaction::INIT) {
         return DataSrc::ERROR;
     }
     int result = sqlite3_exec(dbparameters->db_, w_start_transaction_str, NULL, NULL, NULL);
     if (result == SQLITE_OK) {
+        int zone_id = hasExactZone(transaction.getZoneName().toText().c_str());
+        if (zone_id <= 0) {
+            return DataSrc::ERROR;
+        }
         isc::data::ElementPtr trans_data = isc::data::Element::createFromString("{}");
-        trans_data->set("zone_id", isc::data::Element::create(hasExactZone(zonename.toText().c_str())));
+        trans_data->set("zone_id", isc::data::Element::create(zone_id));
         transaction.setData(trans_data);
         transaction.setState(DataSrcTransaction::RUNNING);
         return DataSrc::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 Thu Jul  8 11:50:10 2010
@@ -110,7 +110,7 @@
 
     // hmz, should we have a transaction context object? (see comments
     // in datasource.h
-    Result startTransaction(DataSrcTransaction& transaction, const isc::dns::Name& zonename);
+    Result startTransaction(DataSrcTransaction& transaction);
     Result commitTransaction(DataSrcTransaction& transaction);
     Result rollbackTransaction(DataSrcTransaction& transaction);
     

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 Thu Jul  8 11:50:10 2010
@@ -992,10 +992,10 @@
     // need rrsetit for doIXFR (but doIXFR should probably be moved up to datasource itself)
 
     EXPECT_EQ(DataSrc::SUCCESS,
-              data_source.startTransaction(transaction, zone_name));
+              data_source.startTransaction(transaction));
     EXPECT_EQ(DataSrcTransaction::RUNNING, transaction.getState());
     EXPECT_EQ(DataSrc::ERROR,
-              data_source.startTransaction(transaction, zone_name));
+              data_source.startTransaction(transaction));
     EXPECT_EQ(DataSrc::SUCCESS,
               data_source.rollbackTransaction(transaction));
     EXPECT_EQ(DataSrcTransaction::DONE, transaction.getState());
@@ -1030,7 +1030,7 @@
     // add it, but roll back
     DataSrcTransaction transaction1(&data_source, zone_name);
     EXPECT_EQ(DataSrc::SUCCESS,
-              data_source.startTransaction(transaction1, zone_name));
+              data_source.startTransaction(transaction1));
     EXPECT_EQ(DataSrc::SUCCESS,
               data_source.addRRset(transaction1, new_rrset));
     EXPECT_EQ(DataSrc::SUCCESS,
@@ -1045,7 +1045,7 @@
     // add it with commit
     DataSrcTransaction transaction2(&data_source, zone_name);
     EXPECT_EQ(DataSrc::SUCCESS,
-              data_source.startTransaction(transaction2, zone_name));
+              data_source.startTransaction(transaction2));
     EXPECT_EQ(DataSrc::SUCCESS,
               data_source.addRRset(transaction2, new_rrset));
     EXPECT_EQ(DataSrc::SUCCESS,
@@ -1075,7 +1075,7 @@
     // add it, but roll back
     DataSrcTransaction transaction1(&data_source, zone_name);
     EXPECT_EQ(DataSrc::SUCCESS,
-              data_source.startTransaction(transaction1, zone_name));
+              data_source.startTransaction(transaction1));
     EXPECT_EQ(DataSrc::SUCCESS,
               data_source.delRRset(transaction1, new_rrset));
     EXPECT_EQ(DataSrc::SUCCESS,
@@ -1091,7 +1091,7 @@
     // add it, and commit
     DataSrcTransaction transaction2(&data_source, zone_name);
     EXPECT_EQ(DataSrc::SUCCESS,
-              data_source.startTransaction(transaction2, zone_name));
+              data_source.startTransaction(transaction2));
     EXPECT_EQ(DataSrc::SUCCESS,
               data_source.delRRset(transaction2, new_rrset));
     EXPECT_EQ(DataSrc::SUCCESS,
@@ -1123,7 +1123,7 @@
 
     // Replace them, roll back
     DataSrcTransaction transaction1(&data_source, zone_name);
-    data_source.startTransaction(transaction1, zone_name);
+    data_source.startTransaction(transaction1);
     data_source.replaceZone(transaction1, new_list);
     data_source.rollbackTransaction(transaction1);
 
@@ -1136,7 +1136,7 @@
 
     // Replace them, commit
     DataSrcTransaction transaction2(&data_source, zone_name);
-    data_source.startTransaction(transaction2, zone_name);
+    data_source.startTransaction(transaction2);
     data_source.replaceZone(transaction2, new_list);
     data_source.commitTransaction(transaction2);
     
@@ -1166,7 +1166,7 @@
 
     // Delete zone, roll back
     DataSrcTransaction transaction1(&data_source, zone_name);
-    data_source.startTransaction(transaction1, zone_name);
+    data_source.startTransaction(transaction1);
     data_source.delZone(transaction1);
     data_source.rollbackTransaction(transaction1);
 
@@ -1179,7 +1179,7 @@
 
     // Delete zone, commit
     DataSrcTransaction transaction2(&data_source, zone_name);
-    data_source.startTransaction(transaction2, zone_name);
+    data_source.startTransaction(transaction2);
     data_source.delZone(transaction2);
     data_source.commitTransaction(transaction2);
     
@@ -1189,6 +1189,11 @@
                                     result_sets, find_flags, &zone_name));
     EXPECT_EQ(DataSrc::NO_SUCH_ZONE, find_flags);
     EXPECT_EQ(1, result_sets.size());
+
+    // try to start a transaction for the zone that is now gone
+    DataSrcTransaction transaction3(&data_source, zone_name);
+    EXPECT_EQ(DataSrc::ERROR, data_source.startTransaction(transaction3));
+    
 }
 
 // initialize the message with flags and codes,
@@ -1272,7 +1277,7 @@
 
     // do IXFR, roll back
     DataSrcTransaction transaction1(&data_source, zone_name);
-    data_source.startTransaction(transaction1, zone_name);
+    data_source.startTransaction(transaction1);
     EXPECT_EQ(DataSrc::SUCCESS,
               data_source.doIXFR(transaction1,
                                  ixfr_msg.beginSection(Section::ANSWER()),
@@ -1286,7 +1291,7 @@
 
     // do IXFR, commit
     DataSrcTransaction transaction2(&data_source, zone_name);
-    data_source.startTransaction(transaction2, zone_name);
+    data_source.startTransaction(transaction2);
     EXPECT_EQ(DataSrc::SUCCESS,
               data_source.doIXFR(transaction2,
                                  ixfr_msg.beginSection(Section::ANSWER()),
@@ -1300,7 +1305,7 @@
 
     // same IXFR should now fail, because the start serial doesn't match
     DataSrcTransaction transaction3(&data_source, zone_name);
-    data_source.startTransaction(transaction3, zone_name);
+    data_source.startTransaction(transaction3);
     EXPECT_EQ(DataSrc::ERROR,
               data_source.doIXFR(transaction3,
                                  ixfr_msg.beginSection(Section::ANSWER()),
@@ -1322,7 +1327,7 @@
     ASSERT_EQ(0, ixfrFromFile(ixfr_msg, TEST_DATA_DIR
               "/ifxr_bad_remove_nonexisting.rrs"));
     DataSrcTransaction transaction1(&data_source, zone_name);
-    data_source.startTransaction(transaction1, zone_name);
+    data_source.startTransaction(transaction1);
     EXPECT_EQ(DataSrc::ERROR,
               data_source.doIXFR(transaction1,
                                  ixfr_msg.beginSection(Section::ANSWER()),




More information about the bind10-changes mailing list