libkea_dhcpsrv_la_SOURCES += d2_client_mgr.cc d2_client_mgr.h
libkea_dhcpsrv_la_SOURCES += daemon.cc daemon.h
libkea_dhcpsrv_la_SOURCES += database_connection.cc database_connection.h
+libkea_dhcpsrv_la_SOURCES += db_exceptions.h
libkea_dhcpsrv_la_SOURCES += dhcpsrv_log.cc dhcpsrv_log.h
libkea_dhcpsrv_la_SOURCES += host.cc host.h
libkea_dhcpsrv_la_SOURCES += host_container.h
namespace isc {
namespace dhcp {
-const time_t DataSource::MAX_DB_TIME = 2147483647;
+const time_t DatabaseConnection::MAX_DB_TIME = 2147483647;
std::string
DatabaseConnection::getParameter(const std::string& name) const {
const std::string type = "type";
// Parse the access string and create a redacted string for logging.
- DataSource::ParameterMap parameters = DataSource::parse(dbaccess);
- std::string redacted = DataSource::redactedAccessString(parameters);
+ DatabaseConnection::ParameterMap parameters = DatabaseConnection::parse(dbaccess);
+ std::string redacted = DatabaseConnection::redactedAccessString(parameters);
// Is "type" present?
if (parameters.find(type) == parameters.end()) {
#define HOST_DATA_SOURCE_FACTORY_H
#include <dhcpsrv/base_host_data_source.h>
-#include <dhcpsrv/data_source.h>
+#include <dhcpsrv/database_connection.h>
#include <exceptions/exceptions.h>
#include <string>
#include <dhcp/hwaddr.h>
#include <dhcpsrv/lease.h>
#include <dhcpsrv/subnet.h>
-#include <exceptions/exceptions.h>
+#include <dhcpsrv/db_exceptions.h>
#include <boost/noncopyable.hpp>
#include <boost/shared_ptr.hpp>
namespace isc {
namespace dhcp {
-/// @brief Multiple lease records found where one expected
-class MultipleRecords : public Exception {
-public:
- MultipleRecords(const char* file, size_t line, const char* what) :
- isc::Exception(file, line, what) {}
-};
-
-/// @brief Attempt to update lease that was not there
-class NoSuchLease : public Exception {
-public:
- NoSuchLease(const char* file, size_t line, const char* what) :
- isc::Exception(file, line, what) {}
-};
-
-/// @brief Data is truncated
-class DataTruncated : public Exception {
-public:
- DataTruncated(const char* file, size_t line, const char* what) :
- isc::Exception(file, line, what) {}
-};
-
-
/// @brief Abstract Lease Manager
///
/// This is an abstract API for lease database backends. It provides unified
}
statements_.clear();
text_statements_.clear();
+}
// Time conversion methods.
//
// Even on 64-bit systems MySQL doesn't seem to accept the timestamps
// beyond the max value of int32_t.
- if (expire_time_64 > DataSource::MAX_DB_TIME) {
+ if (expire_time_64 > DatabaseConnection::MAX_DB_TIME) {
isc_throw(BadValue, "Time value is too large: " << expire_time_64);
}
#include <dhcpsrv/dhcpsrv_log.h>
#include <dhcpsrv/mysql_host_data_source.h>
#include <dhcpsrv/mysql_connection.h>
+#include <dhcpsrv/db_exceptions.h>
#include <boost/static_assert.hpp>
#include <mysqld_error.h>
// expiry time (expire). The relationship is given by:
//
// expire = cltt_ + valid_lft_
- MySqlLeaseMgr::convertToDatabaseTime(lease_->cltt_, lease_->valid_lft_,
- expire_);
+ MySqlConnection::convertToDatabaseTime(lease_->cltt_, lease_->valid_lft_,
+ expire_);
bind_[4].buffer_type = MYSQL_TYPE_TIMESTAMP;
bind_[4].buffer = reinterpret_cast<char*>(&expire_);
bind_[4].buffer_length = sizeof(expire_);
// Convert times received from the database to times for the lease
// structure
time_t cltt = 0;
- MySqlLeaseMgr::convertFromDatabaseTime(expire_, valid_lifetime_, cltt);
+ MySqlConnection::convertFromDatabaseTime(expire_, valid_lifetime_, cltt);
if (client_id_null_==MLM_TRUE) {
// There's no client-id, so we pass client-id_length_ set to 0
//
// expire = cltt_ + valid_lft_
//
- MySqlLeaseMgr::convertToDatabaseTime(lease_->cltt_, lease_->valid_lft_,
- expire_);
+ MySqlConnection::convertToDatabaseTime(lease_->cltt_, lease_->valid_lft_,
+ expire_);
bind_[3].buffer_type = MYSQL_TYPE_TIMESTAMP;
bind_[3].buffer = reinterpret_cast<char*>(&expire_);
bind_[3].buffer_length = sizeof(expire_);
subnet_id_, fqdn_fwd_, fqdn_rev_,
hostname, hwaddr, prefixlen_));
time_t cltt = 0;
- MySqlLeaseMgr::convertFromDatabaseTime(expire_, valid_lifetime_, cltt);
+ MySqlConnection::convertFromDatabaseTime(expire_, valid_lifetime_, cltt);
result->cltt_ = cltt;
return (result);
#include <dhcpsrv/tests/generic_host_data_source_unittest.h>
#include <dhcpsrv/tests/test_utils.h>
-#include <dhcpsrv/data_source.h>
+#include <dhcpsrv/database_connection.h>
#include <asiolink/io_address.h>
#include <gtest/gtest.h>
#include <sstream>
// Set valid_lft_ to 1 day, cllt_ to max time. This should make expire
// time too large to store.
lease->valid_lft_ = 24*60*60;
- lease->cltt_ = DataSource::MAX_DB_TIME;
+ lease->cltt_ = DatabaseConnection::MAX_DB_TIME;
// Insert should throw.
ASSERT_THROW(lmptr_->addLease(leases[1]), DbOperationError);
// Set valid_lft_ to 1 day, cllt_ to max time. This should make expire
// time too large to store.
lease->valid_lft_ = 24*60*60;
- lease->cltt_ = DataSource::MAX_DB_TIME;
+ lease->cltt_ = DatabaseConnection::MAX_DB_TIME;
// Insert should throw.
ASSERT_THROW(lmptr_->addLease(leases[1]), DbOperationError);