Kea  1.9.9-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...
 
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 &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 221 of file database_connection.h.

Member Typedef Documentation

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

Database configuration parameter map.

Definition at line 233 of file database_connection.h.

Constructor & Destructor Documentation

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 240 of file database_connection.h.

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

Destructor.

Definition at line 246 of file database_connection.h.

Member Function Documentation

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 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.

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 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().

bool isc::db::DatabaseConnection::invokeDbFailedCallback ( const 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 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().

bool isc::db::DatabaseConnection::invokeDbLostCallback ( const 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 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().

bool isc::db::DatabaseConnection::invokeDbRecoveredCallback ( const 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 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().

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 350 of file database_connection.h.

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 151 of file database_connection.cc.

void isc::db::DatabaseConnection::markUnusable ( )
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().

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 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().

+ Here is the call graph for this function:

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

The reconnect settings.

Returns
The reconnect settings.

Definition at line 257 of file database_connection.h.

Referenced by isc::db::PgSqlConnection::startRecoverDbConnection(), and isc::db::MySqlConnection::startRecoverDbConnection().

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 103 of file database_connection.cc.

Referenced by isc::dhcp::LeaseMgrFactory::create(), and isc::process::ConfigDbInfo::redactedAccessString().

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 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.

+ Here is the call graph for this function:

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 274 of file database_connection.cc.

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

Member Data Documentation

DbCallback isc::db::DatabaseConnection::callback_
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().

DbCallback isc::db::DatabaseConnection::db_failed_callback_ = 0
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().

DbCallback isc::db::DatabaseConnection::db_lost_callback_ = 0
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().

DbCallback isc::db::DatabaseConnection::db_recovered_callback_ = 0
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().

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 230 of file database_connection.h.

Referenced by isc::db::PgSqlExchange::convertToDatabaseTime().


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