#include <dhcpsrv/dhcpsrv_log.h>
#include <dhcpsrv/lease_file_loader.h>
#include <dhcpsrv/memfile_lease_mgr.h>
+#include <dhcpsrv/database_connection.h>
#include <exceptions/exceptions.h>
#include <util/pid_file.h>
#include <util/process_spawn.h>
return (process_->getExitStatus(pid_));
}
-std::string
-Memfile_LeaseMgr::getParameter(const std::string& name) const {
- ParameterMap::const_iterator param = parameters_.find(name);
- if (param == parameters_.end()) {
- isc_throw(BadValue, "Parameter " << name << " not found");
- }
- return (param->second);
-}
-
-Memfile_LeaseMgr::Memfile_LeaseMgr(const ParameterMap& parameters): parameters_(parameters),
- lfc_setup_(new LFCSetup(boost::bind(&Memfile_LeaseMgr::lfcCallback, this),
- *getIOService()))
+Memfile_LeaseMgr::Memfile_LeaseMgr(const DatabaseConnection::ParameterMap& parameters):
+ lfc_setup_(new LFCSetup(boost::bind(&Memfile_LeaseMgr::lfcCallback, this),
+ *getIOService())),
+ conn_(parameters)
{
// Check the universe and use v4 file or v6 file.
- std::string universe = getParameter("universe");
+ std::string universe = conn_.getParameter("universe");
if (universe == "4") {
std::string file4 = initLeaseFilePath(V4);
if (!file4.empty()) {
Memfile_LeaseMgr::initLeaseFilePath(Universe u) {
std::string persist_val;
try {
- persist_val = getParameter("persist");
+ persist_val = conn_.getParameter("persist");
} catch (const Exception& ex) {
// If parameter persist hasn't been specified, we use a default value
// 'yes'.
std::string lease_file;
try {
- lease_file = getParameter("name");
+ lease_file = conn_.getParameter("name");
} catch (const Exception& ex) {
lease_file = getDefaultLeaseFilePath(u);
}
Memfile_LeaseMgr::lfcSetup() {
std::string lfc_interval_str = "0";
try {
- lfc_interval_str = getParameter("lfc-interval");
+ lfc_interval_str = conn_.getParameter("lfc-interval");
} catch (const std::exception& ex) {
// Ignore and default to 0.
}
/// var/kea/kea-leases6.csv.
class Memfile_LeaseMgr : public LeaseMgr {
public:
- /// @brief Database configuration parameter map
- typedef std::map<std::string, std::string> ParameterMap;
-
/// @defgroup versions Specified memfile backend version.
///
/// @brief Defines major version of the memfile backend.
/// @}
- /// @brief Returns value of a connection parameter.
- ///
- /// @param name Name of the parameter which value should be returned.
- /// @return Value of one of the connection parameters.
- /// @throw BadValue if parameter is not found
- std::string getParameter(const std::string& name) const;
-
/// @brief Specifies universe (V4, V6)
///
/// This enumeration is used by various functions in Memfile %Lease Manager,
///
/// @param parameters A data structure relating keywords and values
/// concerned with the database.
- Memfile_LeaseMgr(const ParameterMap& parameters);
+ Memfile_LeaseMgr(const DatabaseConnection::ParameterMap& parameters);
/// @brief Destructor (closes file)
virtual ~Memfile_LeaseMgr();
template<typename LeaseFileType>
void lfcExecute(boost::shared_ptr<LeaseFileType>& lease_file);
- /// @brief List of parameters passed in dbconfig
- ///
- /// That will be mostly used for storing database name, username,
- /// password and other parameters required for DB access. It is not
- /// intended to keep any DHCP-related parameters.
- ParameterMap parameters_;
-
/// @brief A pointer to the Lease File Cleanup configuration.
boost::scoped_ptr<LFCSetup> lfc_setup_;
+ /// @brief Parameters storage
+ ///
+ /// DatabaseConnection object is used only for storing, accessing and
+ /// printing parameter map.
+ DatabaseConnection conn_;
//@}
};