Kea
1.9.9-git
|
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... | |
ReconnectCtlPtr | reconnectCtl () |
The reconnect settings. More... | |
Static Public Member Functions | |
static bool | invokeDbFailedCallback (const ReconnectCtlPtr &db_reconnect_ctl) |
Invokes the connection's restore failed connectivity callback. More... | |
static bool | invokeDbLostCallback (const ReconnectCtlPtr &db_reconnect_ctl) |
Invokes the connection's lost connectivity callback. More... | |
static bool | invokeDbRecoveredCallback (const 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 221 of file database_connection.h.
typedef std::map<std::string, std::string> isc::db::DatabaseConnection::ParameterMap |
Database configuration parameter map.
Definition at line 233 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 240 of file database_connection.h.
|
inlinevirtual |
Destructor.
Definition at line 246 of file database_connection.h.
|
inline |
Throws an exception if the connection is not usable.
DbConnectionUnusable |
Definition at line 341 of file database_connection.h.
References isc_throw.
Referenced by isc::db::PgSqlConnection::commit(), isc::db::MySqlConnection::commit(), isc::db::MySqlConnection::insertQuery(), isc::db::PgSqlConnection::rollback(), isc::db::MySqlConnection::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 132 of file database_connection.cc.
References 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 29 of file database_connection.cc.
References isc_throw.
Referenced by isc::dhcp::CqlLeaseMgr::getName(), isc::dhcp::CqlHostDataSourceImpl::getName(), isc::dhcp::Memfile_LeaseMgr::Memfile_LeaseMgr(), isc::db::CqlConnection::openDatabase(), isc::db::MySqlConnection::openDatabase(), and isc::db::PgSqlConnection::openDatabase().
|
static |
Invokes the connection's restore failed connectivity callback.
Definition at line 209 of file database_connection.cc.
Referenced by isc::dhcp::PgSqlLeaseMgr::dbReconnect(), isc::dhcp::MySqlLeaseMgr::dbReconnect(), isc::dhcp::PgSqlHostDataSourceImpl::dbReconnect(), and isc::dhcp::MySqlHostDataSourceImpl::dbReconnect().
|
static |
Invokes the connection's lost connectivity callback.
Definition at line 191 of file database_connection.cc.
Referenced by isc::dhcp::PgSqlLeaseMgr::dbReconnect(), isc::dhcp::MySqlLeaseMgr::dbReconnect(), isc::dhcp::PgSqlHostDataSourceImpl::dbReconnect(), and isc::dhcp::MySqlHostDataSourceImpl::dbReconnect().
|
static |
Invokes the connection's restored connectivity callback.
Definition at line 200 of file database_connection.cc.
Referenced by isc::dhcp::PgSqlLeaseMgr::dbReconnect(), isc::dhcp::MySqlLeaseMgr::dbReconnect(), isc::dhcp::PgSqlHostDataSourceImpl::dbReconnect(), and isc::dhcp::MySqlHostDataSourceImpl::dbReconnect().
|
inline |
Flag which indicates if connection is unusable.
Definition at line 350 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 151 of file database_connection.cc.
|
inlineprotected |
Sets the unusable flag to true.
Definition at line 356 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 38 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().
|
inline |
The reconnect settings.
Definition at line 257 of file database_connection.h.
Referenced by isc::db::PgSqlConnection::startRecoverDbConnection(), and isc::db::MySqlConnection::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 103 of file database_connection.cc.
Referenced by isc::dhcp::LeaseMgrFactory::create(), and isc::process::ConfigDbInfo::redactedAccessString().
|
static |
Unparse a parameter map.
params | the parameter map to unparse |
Definition at line 218 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.
|
static |
Unparse an access string.
dbaccess | the database access string |
Definition at line 274 of file database_connection.cc.
Referenced by isc::process::ConfigDbInfo::toElement(), isc::dhcp::CfgLeaseDbAccess::toElement(), and isc::dhcp::CfgHostDbAccess::toElement().
|
protected |
The callback used to recover the connection.
Definition at line 370 of file database_connection.h.
Referenced by isc::db::PgSqlConnection::startRecoverDbConnection(), and isc::db::MySqlConnection::startRecoverDbConnection().
|
static |
Optional callback function to invoke if an opened connection recovery failed.
Definition at line 337 of file database_connection.h.
Referenced by isc::dhcp::ControlledDhcpv4Srv::~ControlledDhcpv4Srv(), and isc::dhcp::ControlledDhcpv6Srv::~ControlledDhcpv6Srv().
|
static |
Optional callback function to invoke if an opened connection is lost.
Definition at line 329 of file database_connection.h.
Referenced by isc::dhcp::ControlledDhcpv4Srv::~ControlledDhcpv4Srv(), and isc::dhcp::ControlledDhcpv6Srv::~ControlledDhcpv6Srv().
|
static |
Optional callback function to invoke if an opened connection recovery succeeded.
Definition at line 333 of file database_connection.h.
Referenced by isc::dhcp::ControlledDhcpv4Srv::~ControlledDhcpv4Srv(), and isc::dhcp::ControlledDhcpv6Srv::~ControlledDhcpv6Srv().
|
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 230 of file database_connection.h.
Referenced by isc::db::PgSqlExchange::convertToDatabaseTime().