]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1621] add lazy retrieval for connection IOService
authorRazvan Becheriu <razvan@isc.org>
Wed, 17 Mar 2021 14:33:32 +0000 (16:33 +0200)
committerRazvan Becheriu <razvan@isc.org>
Mon, 29 Mar 2021 18:10:53 +0000 (21:10 +0300)
src/lib/dhcpsrv/mysql_host_data_source.cc
src/lib/dhcpsrv/pgsql_host_data_source.cc

index f737aabe833435d375260a77a792ed39ac94f30e..f4818dcdf219cd0eadcae6dde46cf668b11b9a19 100644 (file)
@@ -1951,10 +1951,10 @@ public:
     /// @brief Constructor
     ///
     /// @param parameters See MySqlHostMgr constructor.
-    /// @param io_service The IOService object, used for all ASIO operations.
+    /// @param io_service_access_callback The IOService access callback.
     /// @param db_reconnect_callback The connection recovery callback.
     MySqlHostContext(const DatabaseConnection::ParameterMap& parameters,
-                     const isc::asiolink::IOServicePtr& io_service,
+                     IOServiceAccessCallbackPtr io_service_access_callback,
                      db::DbCallback db_reconnect_callback);
 
     /// The exchange objects are used for transfer of data to/from the database.
@@ -2731,9 +2731,10 @@ TaggedStatementArray tagged_statements = { {
 // MySqlHostContext Constructor
 
 MySqlHostContext::MySqlHostContext(const DatabaseConnection::ParameterMap& parameters,
-                                   const isc::asiolink::IOServicePtr& io_service,
+                                   IOServiceAccessCallbackPtr io_service_access_callback,
                                    db::DbCallback db_reconnect_callback)
-    : conn_(parameters, io_service, db_reconnect_callback), is_readonly_(true) {
+    : conn_(parameters, io_service_access_callback, db_reconnect_callback),
+      is_readonly_(true) {
 }
 
 // MySqlHostContextAlloc Constructor and Destructor
@@ -2806,8 +2807,8 @@ MySqlHostDataSourceImpl::MySqlHostDataSourceImpl(const DatabaseConnection::Param
 MySqlHostContextPtr
 MySqlHostDataSourceImpl::createContext() const {
     MySqlHostContextPtr ctx(new MySqlHostContext(parameters_,
-                            HostMgr::getIOService(),
-                            &MySqlHostDataSourceImpl::dbReconnect));
+        IOServiceAccessCallbackPtr(new IOServiceAccessCallback(&HostMgr::getIOService)),
+        &MySqlHostDataSourceImpl::dbReconnect));
 
     // Open the database.
     ctx->conn_.openDatabase();
index a619145ab3263644dcf855a5f71c459d311067e8..d4dba22f0baf840f0ceb35f9c0b2775388baa5d1 100644 (file)
@@ -1313,10 +1313,10 @@ public:
     /// @brief Constructor
     ///
     /// @param parameters See PgSqlHostMgr constructor.
-    /// @param io_service The IOService object, used for all ASIO operations.
+    /// @param io_service_access_callback The IOService access callback.
     /// @param db_reconnect_callback The connection recovery callback.
     PgSqlHostContext(const DatabaseConnection::ParameterMap& parameters,
-                     const isc::asiolink::IOServicePtr& io_service,
+                     IOServiceAccessCallbackPtr io_service_access_callback,
                      db::DbCallback db_reconnect_callback);
 
     /// The exchange objects are used for transfer of data to/from the database.
@@ -2172,9 +2172,10 @@ TaggedStatementArray tagged_statements = { {
 // PgSqlHostContext Constructor
 
 PgSqlHostContext::PgSqlHostContext(const DatabaseConnection::ParameterMap& parameters,
-                                   const isc::asiolink::IOServicePtr& io_service,
+                                   IOServiceAccessCallbackPtr io_service_access_callback,
                                    db::DbCallback db_reconnect_callback)
-    : conn_(parameters, io_service, db_reconnect_callback), is_readonly_(true) {
+    : conn_(parameters, io_service_access_callback, db_reconnect_callback),
+      is_readonly_(true) {
 }
 
 // PgSqlHostContextAlloc Constructor and Destructor
@@ -2247,8 +2248,8 @@ PgSqlHostDataSourceImpl::PgSqlHostDataSourceImpl(const DatabaseConnection::Param
 PgSqlHostContextPtr
 PgSqlHostDataSourceImpl::createContext() const {
     PgSqlHostContextPtr ctx(new PgSqlHostContext(parameters_,
-                            HostMgr::getIOService(),
-                            &PgSqlHostDataSourceImpl::dbReconnect));
+        IOServiceAccessCallbackPtr(new IOServiceAccessCallback(&HostMgr::getIOService)),
+        &PgSqlHostDataSourceImpl::dbReconnect));
 
     // Open the database.
     ctx->conn_.openDatabase();