52#include <unordered_map>
118 template <
typename T>
120 static_assert(std::is_base_of_v<collector_plugin, T>,
121 "T must derive from collector_plugin");
123 std::lock_guard<std::mutex> lock(
mutex_);
124 factories_[std::string(name)] = []() -> std::unique_ptr<collector_plugin> {
125 return std::make_unique<T>();
155 -> std::vector<collector_plugin*>;
Pure virtual interface for metric collector plugins.
Thread-safe registry for managing collector plugins.
auto get_registry_stats() const -> std::map< std::string, size_t >
Get registry statistics.
auto register_plugin(std::unique_ptr< collector_plugin > plugin) -> bool
Register a plugin instance.
auto plugin_count() const -> size_t
Get the number of registered plugins.
std::unordered_map< std::string, std::unique_ptr< collector_plugin > > plugins_
std::unordered_map< std::string, bool > initialized_
auto get_plugins() -> std::vector< collector_plugin * >
Get all registered plugins.
auto has_plugin(std::string_view name) const -> bool
Check if a plugin is registered.
auto load_plugin(std::string_view path) -> bool
Load a plugin from a shared library.
auto unload_plugin(std::string_view name) -> bool
Unload a dynamically loaded plugin.
void shutdown_all()
Shutdown all registered plugins.
auto unregister_plugin(std::string_view name) -> bool
Unregister a plugin by name.
auto get_plugin_loader_error() const -> std::string
Get the last error from plugin loader.
std::unique_ptr< dynamic_plugin_loader > plugin_loader_
auto get_plugins_by_category(plugin_category category) -> std::vector< collector_plugin * >
Get plugins in a specific category.
std::unordered_map< std::string, plugin_factory_fn > factories_
void clear()
Clear all plugins (for testing)
auto instantiate_from_factory(const std::string &name) -> bool
Instantiate a plugin from factory if needed.
auto initialize_all(const config_map &config={}) -> size_t
Initialize all registered plugins.
auto get_plugin(std::string_view name) -> collector_plugin *
Get a plugin by name.
static auto instance() -> collector_registry &
Get the singleton instance.
void register_factory(std::string_view name)
Register a factory function for lazy instantiation.
Plugin interface for metric collectors.
std::unique_ptr< collector_plugin >(*)() plugin_factory_fn
Type alias for plugin factory function.
plugin_category
Categorization of collector plugins.
std::unordered_map< std::string, std::string > config_map
Type alias for configuration map.
Dynamic plugin loading from shared libraries.