2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-30 13:37:55 +00:00

[2821] Updated documentation related to MySqlHolder class.

This commit is contained in:
Stephen Morris
2013-03-07 23:00:23 +00:00
parent e58c2fd32c
commit b11b84e52d
2 changed files with 30 additions and 4 deletions

View File

@@ -908,6 +908,9 @@ MySqlLeaseMgr::~MySqlLeaseMgr() {
statements_[i] = NULL;
}
}
// There is no need to close the database in this destructor: it is
// closed in the destructor of the mysql_ member variable.
}

View File

@@ -19,6 +19,7 @@
#include <dhcpsrv/lease_mgr.h>
#include <boost/scoped_ptr.hpp>
#include <boost/utility.hpp>
#include <mysql/mysql.h>
#include <time.h>
@@ -26,28 +27,50 @@
namespace isc {
namespace dhcp {
/// @brief MySQL Handle Holder
///
/// Small RAII object for safer initialization, will close the database
/// connection upon destruction
class MySqlHolder {
/// connection upon destruction. This means that if an exception is thrown
/// during database initialization, resources allocated to the database are
/// guaranteed to be freed.
///
/// It makes no sense to copy an object of this class. After the copy, both
/// objects would contain pointers to the same MySql context object. The
/// destruction of one would invalid the context in the remaining object.
/// For this reason, the class is declared noncopyable.
class MySqlHolder : public boost::noncopyable {
public:
/// @brief Constructor
///
/// Initialize MySql and store the associated context object.
///
/// @throw DbOpenError Unable to initialize MySql handle.
MySqlHolder() : mysql_(mysql_init(NULL)) {
if (mysql_ == NULL) {
isc_throw(DbOpenError, "unable to initialize MySQL");
}
}
/// @brief Destructor
///
/// Frees up resources allocated by the initialization of MySql.
~MySqlHolder() {
if (mysql_) {
if (mysql_ != NULL) {
mysql_close(mysql_);
}
}
/// @brief Conversion Operator
///
/// Allows the MySqlHolder object to be passed as the context argument to
/// mysql_xxx functions.
operator MYSQL*() const {
return (mysql_);
}
private:
MYSQL* mysql_;
MYSQL* mysql_; ///< Initialization context
};
// Define the current database schema values