BIND 10 trac2821, updated. e58c2fd32cb85d37cd96ff8bb6a7cdf0f653a5a1 [2821] Move MySqlHolder to header, and use as member

BIND 10 source code commits bind10-changes at lists.isc.org
Thu Mar 7 15:55:10 UTC 2013


The branch, trac2821 has been updated
       via  e58c2fd32cb85d37cd96ff8bb6a7cdf0f653a5a1 (commit)
      from  21dae0aa029e8d549c8ba4d5bffeb10ef341f17d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit e58c2fd32cb85d37cd96ff8bb6a7cdf0f653a5a1
Author: Jelte Jansen <jelte at isc.org>
Date:   Thu Mar 7 15:48:51 2013 +0100

    [2821] Move MySqlHolder to header, and use as member
    
    Half-related change, if available, call mysql_library_end() at the end of the unit test run

-----------------------------------------------------------------------

Summary of changes:
 src/lib/dhcpsrv/mysql_lease_mgr.cc     |   43 +-------------------------------
 src/lib/dhcpsrv/mysql_lease_mgr.h      |   28 +++++++++++++++++++--
 src/lib/dhcpsrv/tests/run_unittests.cc |    9 +++++++
 3 files changed, 36 insertions(+), 44 deletions(-)

-----------------------------------------------------------------------
diff --git a/src/lib/dhcpsrv/mysql_lease_mgr.cc b/src/lib/dhcpsrv/mysql_lease_mgr.cc
index 3646425..f029189 100644
--- a/src/lib/dhcpsrv/mysql_lease_mgr.cc
+++ b/src/lib/dhcpsrv/mysql_lease_mgr.cc
@@ -193,32 +193,6 @@ TaggedStatement tagged_statements[] = {
     {MySqlLeaseMgr::NUM_STATEMENTS, NULL}
 };
 
-// Small RAII object for safer initialization, will close the database
-// connection upon destruction, unless release() has been called.
-class MySQLHolder {
-public:
-    MySQLHolder(MYSQL* mysql) : mysql_(mysql) {}
-
-    ~MySQLHolder() {
-        if (mysql_) {
-            mysql_close(mysql_);
-        }
-    }
-
-    MYSQL* get_ptr() {
-        return (mysql_);
-    }
-
-    MYSQL* release() {
-        MYSQL* ptr = mysql_;
-        mysql_ = NULL;
-        return (ptr);
-    }
-
-private:
-    MYSQL* mysql_;
-};
-
 };  // Anonymous namespace
 
 
@@ -899,15 +873,7 @@ private:
 // MySqlLeaseMgr Constructor and Destructor
 
 MySqlLeaseMgr::MySqlLeaseMgr(const LeaseMgr::ParameterMap& parameters)
-    : LeaseMgr(parameters), mysql_(NULL) {
-
-    // Allocate context for MySQL
-    MySQLHolder mysql_holder(mysql_init(NULL));
-
-    mysql_ = mysql_holder.get_ptr();
-    if (mysql_ == NULL) {
-        isc_throw(DbOpenError, "unable to initialize MySQL");
-    }
+    : LeaseMgr(parameters) {
 
     // Open the database.
     openDatabase();
@@ -929,9 +895,6 @@ MySqlLeaseMgr::MySqlLeaseMgr(const LeaseMgr::ParameterMap& parameters)
     // program and the database.
     exchange4_.reset(new MySqlLease4Exchange());
     exchange6_.reset(new MySqlLease6Exchange());
-
-    // Let the real destructor take care of cleaning up now
-    mysql_holder.release();
 }
 
 
@@ -945,10 +908,6 @@ MySqlLeaseMgr::~MySqlLeaseMgr() {
             statements_[i] = NULL;
         }
     }
-
-    // Close the database
-    mysql_close(mysql_);
-    mysql_ = NULL;
 }
 
 
diff --git a/src/lib/dhcpsrv/mysql_lease_mgr.h b/src/lib/dhcpsrv/mysql_lease_mgr.h
index 62f4435..253f30f 100644
--- a/src/lib/dhcpsrv/mysql_lease_mgr.h
+++ b/src/lib/dhcpsrv/mysql_lease_mgr.h
@@ -26,6 +26,30 @@
 namespace isc {
 namespace dhcp {
 
+/// Small RAII object for safer initialization, will close the database
+/// connection upon destruction
+class MySqlHolder {
+public:
+    MySqlHolder() : mysql_(mysql_init(NULL)) {
+        if (mysql_ == NULL) {
+            isc_throw(DbOpenError, "unable to initialize MySQL");
+        }
+    }
+
+    ~MySqlHolder() {
+        if (mysql_) {
+            mysql_close(mysql_);
+        }
+    }
+
+    operator MYSQL*() const {
+        return (mysql_);
+    }
+
+private:
+    MYSQL* mysql_;
+};
+
 // Define the current database schema values
 
 const uint32_t CURRENT_VERSION_VERSION = 1;
@@ -379,7 +403,7 @@ public:
     /// @param cltt Reference to location where client last transmit time
     ///        is put.
     static
-    void convertFromDatabaseTime(const MYSQL_TIME& expire, 
+    void convertFromDatabaseTime(const MYSQL_TIME& expire,
                                  uint32_t valid_lifetime, time_t& cltt);
     ///@}
 
@@ -616,7 +640,7 @@ private:
     /// declare them as "mutable".)
     boost::scoped_ptr<MySqlLease4Exchange> exchange4_; ///< Exchange object
     boost::scoped_ptr<MySqlLease6Exchange> exchange6_; ///< Exchange object
-    MYSQL*              mysql_;                 ///< MySQL context object
+    MySqlHolder mysql_;
     std::vector<MYSQL_STMT*> statements_;       ///< Prepared statements
     std::vector<std::string> text_statements_;  ///< Raw text of statements
 };
diff --git a/src/lib/dhcpsrv/tests/run_unittests.cc b/src/lib/dhcpsrv/tests/run_unittests.cc
index d333a6f..8235c59 100644
--- a/src/lib/dhcpsrv/tests/run_unittests.cc
+++ b/src/lib/dhcpsrv/tests/run_unittests.cc
@@ -12,10 +12,15 @@
 // OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 // PERFORMANCE OF THIS SOFTWARE.
 
+#include <config.h>
 #include <log/logger_support.h>
 
 #include <gtest/gtest.h>
 
+#ifdef HAVE_MYSQL
+#include <mysql/mysql.h>
+#endif
+
 int
 main(int argc, char* argv[]) {
     ::testing::InitGoogleTest(&argc, argv);
@@ -23,5 +28,9 @@ main(int argc, char* argv[]) {
 
     int result = RUN_ALL_TESTS();
 
+#ifdef HAVE_MYSQL
+    mysql_library_end();
+#endif
+
     return (result);
 }



More information about the bind10-changes mailing list