MySqlConfigBackendImpl(const DatabaseConnection::ParameterMap& parameters,
const DbCallback db_reconnect_callback)
: conn_(parameters,
- IOServiceAccessCallbackPtr(new IOServiceAccessCallback(MySqlConfigBackendImpl::getIOService)),
+ IOServiceAccessorPtr(new IOServiceAccessor(MySqlConfigBackendImpl::getIOService)),
db_reconnect_callback), timer_name_(""),
audit_revision_created_(false), parameters_(parameters) {
// Test schema version first.
/// @brief Defines a callback prototype for propagating events upward
typedef std::function<bool (ReconnectCtlPtr db_reconnect_ctl)> DbCallback;
-/// @brief Callback which returns the IOService that can be used to recover the
+/// @brief Function which returns the IOService that can be used to recover the
/// connection.
-typedef std::function<isc::asiolink::IOServicePtr ()> IOServiceAccessCallback;
-
-/// @brief Pointer to an instance of IOServiceAccessCallbackPtr
-typedef boost::shared_ptr<IOServiceAccessCallback> IOServiceAccessCallbackPtr;
+///
+/// This accessor is used to lazy retrieve the IOService when the connection is
+/// lost. It is useful to retrieve it at a later time to support hook libraries
+/// which create managers on load and set IOService later on by using the
+/// dhcp4_srv_configured and dhcp6_srv_configured hooks.
+typedef std::function<isc::asiolink::IOServicePtr ()> IOServiceAccessor;
+
+/// @brief Pointer to an instance of IOServiceAccessor
+typedef boost::shared_ptr<IOServiceAccessor> IOServiceAccessorPtr;
/// @brief Common database connection class.
///
/// @brief Constructor
///
/// @param parameters See MySqlHostMgr constructor.
- /// @param io_service_access_callback The IOService access callback.
+ /// @param io_service_accessor The IOService accessor function.
/// @param db_reconnect_callback The connection recovery callback.
MySqlHostContext(const DatabaseConnection::ParameterMap& parameters,
- IOServiceAccessCallbackPtr io_service_access_callback,
+ IOServiceAccessorPtr io_service_accessor,
db::DbCallback db_reconnect_callback);
/// The exchange objects are used for transfer of data to/from the database.
// MySqlHostContext Constructor
MySqlHostContext::MySqlHostContext(const DatabaseConnection::ParameterMap& parameters,
- IOServiceAccessCallbackPtr io_service_access_callback,
+ IOServiceAccessorPtr io_service_accessor,
db::DbCallback db_reconnect_callback)
- : conn_(parameters, io_service_access_callback, db_reconnect_callback),
+ : conn_(parameters, io_service_accessor, db_reconnect_callback),
is_readonly_(true) {
}
MySqlHostContextPtr
MySqlHostDataSourceImpl::createContext() const {
MySqlHostContextPtr ctx(new MySqlHostContext(parameters_,
- IOServiceAccessCallbackPtr(new IOServiceAccessCallback(&HostMgr::getIOService)),
+ IOServiceAccessorPtr(new IOServiceAccessor(&HostMgr::getIOService)),
&MySqlHostDataSourceImpl::dbReconnect));
// Open the database.
// MySqlLeaseContext Constructor
MySqlLeaseContext::MySqlLeaseContext(const DatabaseConnection::ParameterMap& parameters,
- IOServiceAccessCallbackPtr io_service_access_callback,
+ IOServiceAccessorPtr io_service_accessor,
DbCallback db_reconnect_callback)
- : conn_(parameters, io_service_access_callback, db_reconnect_callback) {
+ : conn_(parameters, io_service_accessor, db_reconnect_callback) {
}
// MySqlLeaseContextAlloc Constructor and Destructor
MySqlLeaseContextPtr
MySqlLeaseMgr::createContext() const {
MySqlLeaseContextPtr ctx(new MySqlLeaseContext(parameters_,
- IOServiceAccessCallbackPtr(new IOServiceAccessCallback(&LeaseMgr::getIOService)),
+ IOServiceAccessorPtr(new IOServiceAccessor(&LeaseMgr::getIOService)),
&MySqlLeaseMgr::dbReconnect));
// Open the database.
/// @brief Constructor
///
/// @param parameters See MySqlLeaseMgr constructor.
- /// @param io_service_access_callback The IOService access callback.
+ /// @param io_service_accessor The IOService accessor function.
/// @param db_reconnect_callback The connection recovery callback.
MySqlLeaseContext(const db::DatabaseConnection::ParameterMap& parameters,
- db::IOServiceAccessCallbackPtr io_service_access_callback,
+ db::IOServiceAccessorPtr io_service_accessor,
db::DbCallback db_reconnect_callback);
/// The exchange objects are used for transfer of data to/from the database.
/// @brief Constructor
///
/// @param parameters See PgSqlHostMgr constructor.
- /// @param io_service_access_callback The IOService access callback.
+ /// @param io_service_accessor The IOService accessor function.
/// @param db_reconnect_callback The connection recovery callback.
PgSqlHostContext(const DatabaseConnection::ParameterMap& parameters,
- IOServiceAccessCallbackPtr io_service_access_callback,
+ IOServiceAccessorPtr io_service_accessor,
db::DbCallback db_reconnect_callback);
/// The exchange objects are used for transfer of data to/from the database.
// PgSqlHostContext Constructor
PgSqlHostContext::PgSqlHostContext(const DatabaseConnection::ParameterMap& parameters,
- IOServiceAccessCallbackPtr io_service_access_callback,
+ IOServiceAccessorPtr io_service_accessor,
db::DbCallback db_reconnect_callback)
- : conn_(parameters, io_service_access_callback, db_reconnect_callback),
+ : conn_(parameters, io_service_accessor, db_reconnect_callback),
is_readonly_(true) {
}
PgSqlHostContextPtr
PgSqlHostDataSourceImpl::createContext() const {
PgSqlHostContextPtr ctx(new PgSqlHostContext(parameters_,
- IOServiceAccessCallbackPtr(new IOServiceAccessCallback(&HostMgr::getIOService)),
+ IOServiceAccessorPtr(new IOServiceAccessor(&HostMgr::getIOService)),
&PgSqlHostDataSourceImpl::dbReconnect));
// Open the database.
// PgSqlLeaseContext Constructor
PgSqlLeaseContext::PgSqlLeaseContext(const DatabaseConnection::ParameterMap& parameters,
- IOServiceAccessCallbackPtr io_service_access_callback,
+ IOServiceAccessorPtr io_service_accessor,
DbCallback db_reconnect_callback)
- : conn_(parameters, io_service_access_callback, db_reconnect_callback) {
+ : conn_(parameters, io_service_accessor, db_reconnect_callback) {
}
// PgSqlLeaseContextAlloc Constructor and Destructor
PgSqlLeaseContextPtr
PgSqlLeaseMgr::createContext() const {
PgSqlLeaseContextPtr ctx(new PgSqlLeaseContext(parameters_,
- IOServiceAccessCallbackPtr(new IOServiceAccessCallback(&LeaseMgr::getIOService)),
+ IOServiceAccessorPtr(new IOServiceAccessor(&LeaseMgr::getIOService)),
&PgSqlLeaseMgr::dbReconnect));
// Open the database.
/// @brief Constructor
///
/// @param parameters See PgSqlLeaseMgr constructor.
- /// @param io_service_access_callback The IOService access callback.
+ /// @param io_service_accessor The IOService accessor function.
/// @param db_reconnect_callback The connection recovery callback.
PgSqlLeaseContext(const db::DatabaseConnection::ParameterMap& parameters,
- db::IOServiceAccessCallbackPtr io_service_access_callback,
+ db::IOServiceAccessorPtr io_service_accessor,
db::DbCallback db_reconnect_callback);
/// The exchange objects are used for transfer of data to/from the database.
/// Initialize MySqlConnection object with parameters needed for connection.
///
/// @param parameters Specify the connection details.
- /// @param io_access_callback The IOService access callback.
+ /// @param io_accessor The IOService accessor function.
/// @param callback The connection recovery callback.
MySqlConnection(const ParameterMap& parameters,
- IOServiceAccessCallbackPtr io_access_callback = IOServiceAccessCallbackPtr(),
+ IOServiceAccessorPtr io_accessor = IOServiceAccessorPtr(),
DbCallback callback = DbCallback())
- : DatabaseConnection(parameters),
- io_service_access_callback_(io_access_callback),
+ : DatabaseConnection(parameters), io_service_accessor_(io_accessor),
io_service_(), callback_(callback) {
}
/// @note The recover function must be run on the IO Service thread.
void startRecoverDbConnection() {
if (callback_) {
- if (!io_service_ && io_service_access_callback_) {
- io_service_ = (*io_service_access_callback_)();
- io_service_access_callback_.reset();
+ if (!io_service_ && io_service_accessor_) {
+ io_service_ = (*io_service_accessor_)();
+ io_service_accessor_.reset();
}
if (io_service_) {
/// and will be from MySqlHostDataSource.
MySqlHolder mysql_;
- /// @brief Callback which returns the IOService that can be used to recover
- /// the connection.
- IOServiceAccessCallbackPtr io_service_access_callback_;
+ /// @brief Accessor function which returns the IOService that can be used to
+ /// recover the connection.
+ ///
+ /// This accessor is used to lazy retrieve the IOService when the connection
+ /// is lost. It is useful to retrieve it at a later time to support hook
+ /// libraries which create managers on load and set IOService later on by
+ /// using the dhcp4_srv_configured and dhcp6_srv_configured hooks.
+ IOServiceAccessorPtr io_service_accessor_;
/// @brief IOService object, used for all ASIO operations.
isc::asiolink::IOServicePtr io_service_;
/// Initialize PgSqlConnection object with parameters needed for connection.
///
/// @param parameters Specify the connection details.
- /// @param io_access_callback The IOService access callback.
+ /// @param io_accessor The IOService accessor function.
/// @param callback The connection recovery callback.
PgSqlConnection(const ParameterMap& parameters,
- IOServiceAccessCallbackPtr io_access_callback = IOServiceAccessCallbackPtr(),
+ IOServiceAccessorPtr io_accessor = IOServiceAccessorPtr(),
DbCallback callback = DbCallback())
- : DatabaseConnection(parameters),
- io_service_access_callback_(io_access_callback),
+ : DatabaseConnection(parameters), io_service_accessor_(io_accessor),
io_service_(), callback_(callback) {
}
/// @note The recover function must be run on the IO Service thread.
void startRecoverDbConnection() {
if (callback_) {
- if (!io_service_ && io_service_access_callback_) {
- io_service_ = (*io_service_access_callback_)();
- io_service_access_callback_.reset();
+ if (!io_service_ && io_service_accessor_) {
+ io_service_ = (*io_service_accessor_)();
+ io_service_accessor_.reset();
}
if (io_service_) {
return (conn_);
}
- /// @brief Callback which returns the IOService that can be used to recover
- /// the connection.
- IOServiceAccessCallbackPtr io_service_access_callback_;
+ /// @brief Accessor function which returns the IOService that can be used to
+ /// recover the connection.
+ ///
+ /// This accessor is used to lazy retrieve the IOService when the connection
+ /// is lost. It is useful to retrieve it at a later time to support hook
+ /// libraries which create managers on load and set IOService later on by
+ /// using the dhcp4_srv_configured and dhcp6_srv_configured hooks.
+ IOServiceAccessorPtr io_service_accessor_;
/// @brief IOService object, used for all ASIO operations.
isc::asiolink::IOServicePtr io_service_;