]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#3536] addressed review comments
authorRazvan Becheriu <razvan@isc.org>
Mon, 9 Sep 2024 20:35:41 +0000 (23:35 +0300)
committerRazvan Becheriu <razvan@isc.org>
Wed, 11 Sep 2024 08:36:40 +0000 (11:36 +0300)
src/lib/dhcpsrv/lease_mgr_factory.cc

index 1d293d8f9a83a40c152af18bfe4c6c4ef3e84039..02050b2ad396acb8ea58352127e128ddc2619c42 100644 (file)
@@ -77,11 +77,13 @@ LeaseMgrFactory::create(const std::string& dbaccess) {
     LeaseMgrFactory::registerFactory("postgresql", pgsql_factory, true);
 #endif
 
-    if (parameters[type] == string("memfile")) {
-        LOG_INFO(dhcpsrv_logger, DHCPSRV_MEMFILE_DB).arg(redacted);
-        getLeaseMgrPtr().reset(new Memfile_LeaseMgr(parameters));
-        return;
-    }
+    // Factory method
+    auto memfile_factory = [](const DatabaseConnection::ParameterMap& parameters) -> TrackingLeaseMgrPtr {
+        LOG_INFO(dhcpsrv_logger, DHCPSRV_MEMFILE_DB)
+            .arg(DatabaseConnection::redactedAccessString(parameters));
+        return (TrackingLeaseMgrPtr(new Memfile_LeaseMgr(parameters)));
+    };
+    LeaseMgrFactory::registerFactory("memfile", memfile_factory, true);
 
     string db_type = it->second;
     auto index = map_.find(db_type);
@@ -121,6 +123,7 @@ LeaseMgrFactory::destroy() {
             .arg(getLeaseMgrPtr()->getType());
     }
     getLeaseMgrPtr().reset();
+    LeaseMgrFactory::deregisterFactory("memfile", true);
     // Code will be moved to appropriate hook library.
 #ifdef HAVE_MYSQL
     LeaseMgrFactory::deregisterFactory("mysql", true);
@@ -152,7 +155,7 @@ LeaseMgrFactory::recreate(const std::string& dbaccess, bool preserve_callbacks)
 
 bool
 LeaseMgrFactory::haveInstance() {
-    return (getLeaseMgrPtr().get());
+    return (!!getLeaseMgrPtr());
 }
 
 TrackingLeaseMgr&