![]() |
Kea 2.5.5
|
Common database connection class. More...
#include <database_connection.h>
Public Types | |
typedef std::map< std::string, std::string > | ParameterMap |
Database configuration parameter map. More... | |
Public Member Functions | |
DatabaseConnection (const ParameterMap ¶meters, 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 ¶meters) |
Redact database access string. More... | |
static isc::data::ElementPtr | toElement (const ParameterMap ¶ms) |
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... | |
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 112 of file database_connection.h.
typedef std::map<std::string, std::string> isc::db::DatabaseConnection::ParameterMap |
Database configuration parameter map.
Definition at line 124 of file database_connection.h.
|
inline |
Constructor.
parameters | A data structure relating keywords and values concerned with the database. |
callback | The connection recovery callback. |
Definition at line 131 of file database_connection.h.
|
inlinevirtual |
Destructor.
Definition at line 137 of file database_connection.h.
|
inline |
Throws an exception if the connection is not usable.
DbConnectionUnusable |
Definition at line 232 of file database_connection.h.
References isc_throw.
Referenced by isc::db::MySqlConnection::commit(), isc::db::PgSqlConnection::commit(), isc::db::PgSqlConnection::executePreparedStatement(), isc::db::PgSqlConnection::executeSQL(), isc::db::MySqlConnection::insertQuery(), isc::db::MySqlConnection::rollback(), isc::db::PgSqlConnection::rollback(), isc::db::MySqlConnection::selectQuery(), isc::db::MySqlConnection::startTransaction(), isc::db::PgSqlConnection::startTransaction(), and isc::db::MySqlConnection::updateDeleteQuery().
bool isc::db::DatabaseConnection::configuredReadOnly | ( | ) | const |
Convenience method checking if database should be opened with read only access.
Definition at line 133 of file database_connection.cc.
References getParameter(), and isc_throw.
std::string isc::db::DatabaseConnection::getParameter | ( | const std::string & | name | ) | const |
Returns value of a connection parameter.
name | Name of the parameter which value should be returned. |
BadValue | if parameter is not found |
Definition at line 30 of file database_connection.cc.
References isc_throw.
Referenced by isc::dhcp::Memfile_LeaseMgr::Memfile_LeaseMgr(), configuredReadOnly(), isc::dhcp::Memfile_LeaseMgr::getVersion(), makeReconnectCtl(), and isc::db::MySqlConnection::openDatabase().
|
static |
Invokes the connection's restore failed connectivity callback.
Definition at line 210 of file database_connection.cc.
References db_failed_callback_.
Referenced by isc::dhcp::MySqlHostDataSourceImpl::dbReconnect(), isc::dhcp::PgSqlHostDataSourceImpl::dbReconnect(), isc::dhcp::MySqlLeaseMgr::dbReconnect(), and isc::dhcp::PgSqlLeaseMgr::dbReconnect().
|
static |
Invokes the connection's lost connectivity callback.
Definition at line 192 of file database_connection.cc.
References db_lost_callback_.
Referenced by isc::dhcp::MySqlHostDataSourceImpl::dbReconnect(), isc::dhcp::PgSqlHostDataSourceImpl::dbReconnect(), isc::dhcp::MySqlLeaseMgr::dbReconnect(), and isc::dhcp::PgSqlLeaseMgr::dbReconnect().
|
static |
Invokes the connection's restored connectivity callback.
Definition at line 201 of file database_connection.cc.
References db_recovered_callback_.
Referenced by isc::dhcp::MySqlHostDataSourceImpl::dbReconnect(), isc::dhcp::PgSqlHostDataSourceImpl::dbReconnect(), isc::dhcp::MySqlLeaseMgr::dbReconnect(), and isc::dhcp::PgSqlLeaseMgr::dbReconnect().
|
inline |
Flag which indicates if connection is unusable.
Definition at line 241 of file database_connection.h.
|
virtual |
Instantiates a ReconnectCtl based on the connection's reconnect parameters.
timer_name | of the timer used for the ReconnectCtl object. |
Definition at line 152 of file database_connection.cc.
References getParameter().
|
inlineprotected |
Sets the unusable flag to true.
Definition at line 247 of file database_connection.h.
Referenced by isc::db::MySqlConnection::checkError(), and isc::db::PgSqlConnection::checkStatementError().
|
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.
dbaccess | Database access string. |
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< ConfigBackendPoolType >::addBackend(), isc::dhcp::LeaseMgrFactory::create(), isc::dhcp::MySqlHostDataSourceImpl::dbReconnect(), isc::dhcp::PgSqlHostDataSourceImpl::dbReconnect(), isc::cb::BaseConfigBackendPool< ConfigBackendType >::del(), isc::dhcp::HostDataSourceFactory::del(), isc::process::ConfigDbInfo::setAccessString(), and toElementDbAccessString().
|
inline |
The reconnect settings.
Definition at line 148 of file database_connection.h.
Referenced by isc::db::MySqlConnection::startRecoverDbConnection(), and isc::db::PgSqlConnection::startRecoverDbConnection().
|
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 | Database access parameters (output of "parse"). |
Definition at line 104 of file database_connection.cc.
Referenced by isc::dhcp::PgSqlHostDataSourceImpl::PgSqlHostDataSourceImpl(), isc::dhcp::PgSqlLeaseMgr::PgSqlLeaseMgr(), isc::dhcp::LeaseMgrFactory::create(), and isc::process::ConfigDbInfo::redactedAccessString().
|
static |
Unparse a parameter map.
params | the parameter map to unparse |
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_BOOLEAN_ERROR, isc::db::DATABASE_TO_JSON_INTEGER_ERROR, isc::db::DATABASE_TO_JSON_UNKNOWN_TYPE_ERROR, and LOG_ERROR.
Referenced by toElementDbAccessString().
|
static |
Unparse an access string.
dbaccess | the database access string |
Definition at line 275 of file database_connection.cc.
References parse(), and toElement().
Referenced by isc::dhcp::CfgLeaseDbAccess::toElement(), isc::dhcp::CfgHostDbAccess::toElement(), and isc::process::ConfigDbInfo::toElement().
|
protected |
The callback used to recover the connection.
Definition at line 261 of file database_connection.h.
Referenced by isc::db::MySqlConnection::startRecoverDbConnection(), and isc::db::PgSqlConnection::startRecoverDbConnection().
|
static |
Optional callback function to invoke if an opened connection recovery failed.
Definition at line 228 of file database_connection.h.
Referenced by isc::dhcp::ControlledDhcpv4Srv::~ControlledDhcpv4Srv(), isc::dhcp::ControlledDhcpv6Srv::~ControlledDhcpv6Srv(), invokeDbFailedCallback(), isc::dhcp::ControlledDhcpv4Srv::processConfig(), and isc::dhcp::ControlledDhcpv6Srv::processConfig().
|
static |
Optional callback function to invoke if an opened connection is lost.
Definition at line 220 of file database_connection.h.
Referenced by isc::dhcp::ControlledDhcpv4Srv::~ControlledDhcpv4Srv(), isc::dhcp::ControlledDhcpv6Srv::~ControlledDhcpv6Srv(), invokeDbLostCallback(), isc::dhcp::ControlledDhcpv4Srv::processConfig(), and isc::dhcp::ControlledDhcpv6Srv::processConfig().
|
static |
Optional callback function to invoke if an opened connection recovery succeeded.
Definition at line 224 of file database_connection.h.
Referenced by isc::dhcp::ControlledDhcpv4Srv::~ControlledDhcpv4Srv(), isc::dhcp::ControlledDhcpv6Srv::~ControlledDhcpv6Srv(), invokeDbRecoveredCallback(), isc::dhcp::ControlledDhcpv4Srv::processConfig(), and isc::dhcp::ControlledDhcpv6Srv::processConfig().
|
static |
Defines maximum value for time that can be reliably stored.
If I'm still alive I'll be too old to care. You fix it.
Definition at line 121 of file database_connection.h.
Referenced by isc::db::PsqlBindArray::addTimestamp(), isc::db::PgSqlExchange::convertToDatabaseTime(), and isc::db::MySqlBinding::convertToDatabaseTime().