25 return kcenon::common::error_info{1,
"Backend name cannot be empty",
"backend_registry"};
30 return kcenon::common::error_info{2,
"Factory function cannot be null",
"backend_registry"};
33 std::lock_guard<std::mutex> lock(
mutex_);
38 return kcenon::common::error_info{3,
"Backend '" + name +
"' is already registered",
"backend_registry"};
42 return kcenon::common::VoidResult::ok(std::monostate{});
47 std::lock_guard<std::mutex> lock(
mutex_);
52 return kcenon::common::error_info{4,
"Backend '" + name +
"' not found",
"backend_registry"};
56 return kcenon::common::VoidResult::ok(std::monostate{});
61 std::lock_guard<std::mutex> lock(
mutex_);
82 std::lock_guard<std::mutex> lock(
mutex_);
88 std::lock_guard<std::mutex> lock(
mutex_);
90 std::vector<std::string> names;
95 names.push_back(pair.first);
99 std::sort(names.begin(), names.end());
106 std::lock_guard<std::mutex> lock(
mutex_);
112 std::lock_guard<std::mutex> lock(
mutex_);
Registry for database backend plugins.
Singleton registry for database backend plugins.
std::vector< std::string > available_backends() const
Get list of all registered backend names.
void clear()
Clear all registered backends (for testing)
kcenon::common::VoidResult unregister_backend(const std::string &name)
Unregister a backend (for testing or dynamic unloading)
static backend_registry & instance()
Get the singleton instance.
bool has_backend(const std::string &name) const
Check if a backend is registered.
std::unique_ptr< database_backend > create(const std::string &name) const
Create a backend instance by name.
std::map< std::string, backend_factory_fn > factories_
kcenon::common::VoidResult register_backend(const std::string &name, backend_factory_fn factory)
Register a backend factory function.
size_t backend_count() const
Get number of registered backends.
std::unique_ptr< database_backend >(*)() backend_factory_fn
Factory function type for creating database backends.