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