Kea  2.1.7-git
isc::db::DatabaseConnection Class Reference

Common database connection class. More...

#include <database_connection.h>

+ Inheritance diagram for isc::db::DatabaseConnection:

Public Types

typedef std::map< std::string, std::string > ParameterMap
 Database configuration parameter map. More...
 

Public Member Functions

 DatabaseConnection (const ParameterMap &parameters, DbCallback callback=DbCallback())
 Constructor. More...
 
virtual ~DatabaseConnection ()
 Destructor. More...
 
void checkUnusable ()
 Throws an exception if the connection is not usable. More...
 
bool configuredReadOnly () const
 Convenience method checking if database should be opened with read only access. More...
 
std::string getParameter (const std::string &name) const
 Returns value of a connection parameter. More...
 
bool isUnusable ()
 Flag which indicates if connection is unusable. More...
 
virtual void makeReconnectCtl (const std::string &timer_name)
 Instantiates a ReconnectCtl based on the connection's reconnect parameters. More...
 
util::ReconnectCtlPtr reconnectCtl ()
 The reconnect settings. More...
 

Static Public Member Functions

static bool invokeDbFailedCallback (const util::ReconnectCtlPtr &db_reconnect_ctl)
 Invokes the connection's restore failed connectivity callback. More...
 
static bool invokeDbLostCallback (const util::ReconnectCtlPtr &db_reconnect_ctl)
 Invokes the connection's lost connectivity callback. More...
 
static bool invokeDbRecoveredCallback (const util::ReconnectCtlPtr &db_reconnect_ctl)
 Invokes the connection's restored connectivity callback. More...
 
static ParameterMap parse (const std::string &dbaccess)
 Parse database access string. More...
 
static std::string redactedAccessString (const ParameterMap &parameters)
 Redact database access string. More...
 
static isc::data::ElementPtr toElement (const ParameterMap &params)
 Unparse a parameter map. More...
 
static isc::data::ElementPtr toElementDbAccessString (const std::string &dbaccess)
 Unparse an access string. More...
 

Static Public Attributes

static DbCallback db_failed_callback_ = 0
 Optional callback function to invoke if an opened connection recovery failed. More...
 
static DbCallback db_lost_callback_ = 0
 Optional callback function to invoke if an opened connection is lost. More...
 
static DbCallback db_recovered_callback_ = 0
 Optional callback function to invoke if an opened connection recovery succeeded. More...
 
static const time_t MAX_DB_TIME = 2147483647
 Defines maximum value for time that can be reliably stored. More...
 

Protected Member Functions

void markUnusable ()
 Sets the unusable flag to true. More...
 

Protected Attributes

DbCallback callback_
 The callback used to recover the connection. More...
 

Detailed Description

Common database connection class.

This class provides functions that are common for establishing connection with different types of databases; enables operations on access parameters strings. In particular, it provides a way to parse parameters in key=value format. This class is expected to be a base class for all isc::dhcp::LeaseMgr and possibly isc::dhcp::BaseHostDataSource derived classes.

Definition at line 103 of file database_connection.h.

Member Typedef Documentation

◆ ParameterMap

typedef std::map<std::string, std::string> isc::db::DatabaseConnection::ParameterMap

Database configuration parameter map.

Definition at line 115 of file database_connection.h.

Constructor & Destructor Documentation

◆ DatabaseConnection()

isc::db::DatabaseConnection::DatabaseConnection ( const ParameterMap parameters,
DbCallback  callback = DbCallback() 
)
inline

Constructor.

Parameters
parametersA data structure relating keywords and values concerned with the database.
callbackThe connection recovery callback.

Definition at line 122 of file database_connection.h.

◆ ~DatabaseConnection()

virtual isc::db::DatabaseConnection::~DatabaseConnection ( )
inlinevirtual

Destructor.

Definition at line 128 of file database_connection.h.

Member Function Documentation

◆ checkUnusable()

void isc::db::DatabaseConnection::checkUnusable ( )
inline

Throws an exception if the connection is not usable.

Exceptions
DbConnectionUnusable

Definition at line 223 of file database_connection.h.

References isc_throw.

◆ configuredReadOnly()

bool isc::db::DatabaseConnection::configuredReadOnly ( ) const

Convenience method checking if database should be opened with read only access.

Returns
true if "readonly" parameter is specified and set to true; false if "readonly" parameter is not specified or it is specified and set to false.

Definition at line 133 of file database_connection.cc.

References isc_throw.

◆ getParameter()

std::string isc::db::DatabaseConnection::getParameter ( const std::string &  name) const

Returns value of a connection parameter.

Parameters
nameName of the parameter which value should be returned.
Returns
Value of one of the connection parameters.
Exceptions
BadValueif parameter is not found

Definition at line 30 of file database_connection.cc.

References isc_throw.

Referenced by isc::dhcp::Memfile_LeaseMgr::getVersion(), isc::dhcp::Memfile_LeaseMgr::lfcCallback(), isc::dhcp::Memfile_LeaseMgr::Memfile_LeaseMgr(), and isc::dhcp::Memfile_LeaseMgr::persistLeases().

◆ invokeDbFailedCallback()

bool isc::db::DatabaseConnection::invokeDbFailedCallback ( const util::ReconnectCtlPtr db_reconnect_ctl)
static

Invokes the connection's restore failed connectivity callback.

Returns
Returns the result of the callback or false if there is no callback.

Definition at line 210 of file database_connection.cc.

Referenced by isc::dhcp::PgSqlLeaseMgr::dbReconnect(), isc::dhcp::MySqlLeaseMgr::dbReconnect(), isc::dhcp::PgSqlHostDataSourceImpl::dbReconnect(), and isc::dhcp::MySqlHostDataSourceImpl::dbReconnect().

◆ invokeDbLostCallback()

bool isc::db::DatabaseConnection::invokeDbLostCallback ( const util::ReconnectCtlPtr db_reconnect_ctl)
static

Invokes the connection's lost connectivity callback.

Returns
Returns the result of the callback or false if there is no callback.

Definition at line 192 of file database_connection.cc.

Referenced by isc::dhcp::PgSqlLeaseMgr::dbReconnect(), isc::dhcp::MySqlLeaseMgr::dbReconnect(), isc::dhcp::PgSqlHostDataSourceImpl::dbReconnect(), and isc::dhcp::MySqlHostDataSourceImpl::dbReconnect().

◆ invokeDbRecoveredCallback()

bool isc::db::DatabaseConnection::invokeDbRecoveredCallback ( const util::ReconnectCtlPtr db_reconnect_ctl)
static

Invokes the connection's restored connectivity callback.

Returns
Returns the result of the callback or false if there is no callback.

Definition at line 201 of file database_connection.cc.

Referenced by isc::dhcp::PgSqlLeaseMgr::dbReconnect(), isc::dhcp::MySqlLeaseMgr::dbReconnect(), isc::dhcp::PgSqlHostDataSourceImpl::dbReconnect(), and isc::dhcp::MySqlHostDataSourceImpl::dbReconnect().

◆ isUnusable()

bool isc::db::DatabaseConnection::isUnusable ( )
inline

Flag which indicates if connection is unusable.

Returns
true if the connection is unusable, false otherwise

Definition at line 232 of file database_connection.h.

◆ makeReconnectCtl()

void isc::db::DatabaseConnection::makeReconnectCtl ( const std::string &  timer_name)
virtual

Instantiates a ReconnectCtl based on the connection's reconnect parameters.

Parameters
timer_nameof the timer used for the ReconnectCtl object.

Definition at line 152 of file database_connection.cc.

References isc::util::ReconnectCtl::onFailActionFromText(), and isc::util::STOP_RETRY_EXIT.

+ Here is the call graph for this function:

◆ markUnusable()

void isc::db::DatabaseConnection::markUnusable ( )
inlineprotected

Sets the unusable flag to true.

Definition at line 238 of file database_connection.h.

◆ parse()

DatabaseConnection::ParameterMap isc::db::DatabaseConnection::parse ( const std::string &  dbaccess)
static

Parse database access string.

Parses the string of "keyword=value" pairs and separates them out into the map. A value of the password parameter may include whitespace in which case it must be surrounded by apostrophes.

Parameters
dbaccessDatabase access string.
Returns
ParameterMap of keyword/value pairs.

Definition at line 39 of file database_connection.cc.

References isc::db::DB_LOG< log_type >::arg(), isc::db::DB_INVALID_ACCESS, isc_throw, isc::util::str::tokens(), and isc::util::str::trim().

Referenced by isc::dhcp::HostDataSourceFactory::add(), isc::cb::BaseConfigBackendMgr< ConfigBackendPoolDHCPv6 >::addBackend(), isc::dhcp::LeaseMgrFactory::create(), isc::dhcp::PgSqlHostDataSourceImpl::dbReconnect(), isc::dhcp::MySqlHostDataSourceImpl::dbReconnect(), isc::cb::BaseConfigBackendPool< ConfigBackendDHCPv6 >::del(), isc::dhcp::HostDataSourceFactory::del(), and isc::process::ConfigDbInfo::setAccessString().

+ Here is the call graph for this function:

◆ reconnectCtl()

util::ReconnectCtlPtr isc::db::DatabaseConnection::reconnectCtl ( )
inline

The reconnect settings.

Returns
The reconnect settings.

Definition at line 139 of file database_connection.h.

◆ redactedAccessString()

std::string isc::db::DatabaseConnection::redactedAccessString ( const ParameterMap parameters)
static

Redact database access string.

Takes the database parameters and returns a database access string passwords replaced by asterisks. This string is used in log messages.

Parameters
parametersDatabase access parameters (output of "parse").
Returns
Redacted database access string.

Definition at line 104 of file database_connection.cc.

Referenced by isc::dhcp::LeaseMgrFactory::create(), isc::dhcp::PgSqlHostDataSourceImpl::PgSqlHostDataSourceImpl(), isc::dhcp::PgSqlLeaseMgr::PgSqlLeaseMgr(), isc::dhcp::HostDataSourceFactory::printRegistered(), and isc::process::ConfigDbInfo::redactedAccessString().

◆ toElement()

isc::data::ElementPtr isc::db::DatabaseConnection::toElement ( const ParameterMap params)
static

Unparse a parameter map.

Parameters
paramsthe parameter map to unparse
Returns
a pointer to configuration

Definition at line 219 of file database_connection.cc.

References isc::data::Element::create(), isc::data::Element::createMap(), isc::db::database_logger, isc::db::DATABASE_TO_JSON_ERROR, and LOG_ERROR.

+ Here is the call graph for this function:

◆ toElementDbAccessString()

isc::data::ElementPtr isc::db::DatabaseConnection::toElementDbAccessString ( const std::string &  dbaccess)
static

Unparse an access string.

Parameters
dbaccessthe database access string
Returns
a pointer to configuration

Definition at line 272 of file database_connection.cc.

Referenced by isc::process::ConfigDbInfo::toElement(), isc::dhcp::CfgLeaseDbAccess::toElement(), and isc::dhcp::CfgHostDbAccess::toElement().

Member Data Documentation

◆ callback_

DbCallback isc::db::DatabaseConnection::callback_
protected

The callback used to recover the connection.

Definition at line 252 of file database_connection.h.

◆ db_failed_callback_

DbCallback isc::db::DatabaseConnection::db_failed_callback_ = 0
static

Optional callback function to invoke if an opened connection recovery failed.

Definition at line 219 of file database_connection.h.

Referenced by isc::dhcp::ControlledDhcpv4Srv::~ControlledDhcpv4Srv(), and isc::dhcp::ControlledDhcpv6Srv::~ControlledDhcpv6Srv().

◆ db_lost_callback_

DbCallback isc::db::DatabaseConnection::db_lost_callback_ = 0
static

Optional callback function to invoke if an opened connection is lost.

Definition at line 211 of file database_connection.h.

Referenced by isc::dhcp::ControlledDhcpv4Srv::~ControlledDhcpv4Srv(), and isc::dhcp::ControlledDhcpv6Srv::~ControlledDhcpv6Srv().

◆ db_recovered_callback_

DbCallback isc::db::DatabaseConnection::db_recovered_callback_ = 0
static

Optional callback function to invoke if an opened connection recovery succeeded.

Definition at line 215 of file database_connection.h.

Referenced by isc::dhcp::ControlledDhcpv4Srv::~ControlledDhcpv4Srv(), and isc::dhcp::ControlledDhcpv6Srv::~ControlledDhcpv6Srv().

◆ MAX_DB_TIME

const time_t isc::db::DatabaseConnection::MAX_DB_TIME = 2147483647
static

Defines maximum value for time that can be reliably stored.

Todo:
: Is this common for MySQL and Postgres? Maybe we should have specific values for each backend?

If I'm still alive I'll be too old to care. You fix it.

Definition at line 112 of file database_connection.h.


The documentation for this class was generated from the following files: