Monitoring System 0.1.0
System resource monitoring with pluggable collectors and alerting
Loading...
Searching...
No Matches
collector_registry.h File Reference

Registry for managing collector plugin lifecycle. More...

#include <functional>
#include <map>
#include <memory>
#include <mutex>
#include <string>
#include <string_view>
#include <unordered_map>
#include <vector>
#include "collector_plugin.h"
#include "plugin_loader.h"
Include dependency graph for collector_registry.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  kcenon::monitoring::collector_registry
 Thread-safe registry for managing collector plugins. More...
 

Namespaces

namespace  kcenon
 
namespace  kcenon::monitoring
 

Detailed Description

Registry for managing collector plugin lifecycle.

This file defines the central registry that manages all collector plugins. It provides:

  • Plugin registration and unregistration
  • Plugin discovery by name or category
  • Lifecycle management (initialization, shutdown)
  • Factory-based lazy instantiation
  • Thread-safe operations

The registry uses a singleton pattern to ensure single global instance.

Usage:

// Register a plugin instance
auto& registry = collector_registry::instance();
registry.register_plugin(std::make_unique<my_collector_plugin>());
// Register a factory for lazy loading
registry.register_factory<my_collector_plugin>("my_collector");
// Initialize all registered plugins
registry.initialize_all();
// Get a specific plugin
if (auto* plugin = registry.get_plugin("my_collector")) {
auto metrics = plugin->collect();
}
// Get plugins by category
auto hw_plugins = registry.get_plugins_by_category(plugin_category::hardware);
// Shutdown all plugins
registry.shutdown_all();

Definition in file collector_registry.h.