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

Dynamic plugin loading from shared libraries. More...

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

Go to the source code of this file.

Classes

class  kcenon::monitoring::plugin_loader
 Abstract interface for plugin loading. More...
 
class  kcenon::monitoring::dynamic_plugin_loader
 Concrete implementation of plugin_loader using OS dynamic loading APIs. More...
 
struct  kcenon::monitoring::dynamic_plugin_loader::plugin_entry
 Information about a loaded plugin. More...
 

Namespaces

namespace  kcenon
 
namespace  kcenon::monitoring
 

Enumerations

enum class  kcenon::monitoring::plugin_load_error {
  kcenon::monitoring::none = 0 , kcenon::monitoring::file_not_found , kcenon::monitoring::library_load_failed , kcenon::monitoring::symbol_not_found ,
  kcenon::monitoring::incompatible_api_version , kcenon::monitoring::create_function_failed , kcenon::monitoring::plugin_unavailable , kcenon::monitoring::already_loaded ,
  kcenon::monitoring::not_loaded , kcenon::monitoring::invalid_metadata
}
 Error codes for plugin loading operations. More...
 

Functions

auto kcenon::monitoring::to_string (plugin_load_error error) -> std::string
 Convert plugin_load_error to string.
 

Detailed Description

Dynamic plugin loading from shared libraries.

This file defines the plugin_loader class which handles loading collector plugins from shared libraries (.so/.dylib/.dll) at runtime.

Features:

  • Cross-platform support (Linux, macOS, Windows)
  • Thread-safe operations
  • API version compatibility checking
  • Automatic resource cleanup
  • Error reporting with detailed messages

Usage:

auto loader = std::make_unique<dynamic_plugin_loader>();
// Load a plugin
auto plugin = loader->load_plugin("/path/to/libmy_plugin.so");
if (plugin) {
// Use the plugin...
}
// Unload the plugin
loader->unload_plugin("my_plugin");

Definition in file plugin_loader.h.