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

C API for dynamically loaded collector plugins. More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  plugin_api_metadata
 Plugin API metadata information. More...
 

Namespaces

namespace  kcenon
 
namespace  kcenon::monitoring
 

Macros

#define PLUGIN_API_VERSION   1
 
#define PLUGIN_EXPORT
 
#define CREATE_PLUGIN_FN_NAME   "create_plugin"
 
#define DESTROY_PLUGIN_FN_NAME   "destroy_plugin"
 
#define GET_PLUGIN_INFO_FN_NAME   "get_plugin_info"
 

Typedefs

typedef struct plugin_api_metadata plugin_api_metadata
 
typedef kcenon::monitoring::collector_plugin *(* create_plugin_fn) (void)
 Create a plugin instance.
 
typedef void(* destroy_plugin_fn) (kcenon::monitoring::collector_plugin *plugin)
 Destroy a plugin instance.
 
typedef const plugin_api_metadata *(* get_plugin_info_fn) (void)
 Get plugin API metadata.
 

Detailed Description

C API for dynamically loaded collector plugins.

This file defines the C ABI interface that all dynamically loaded plugins must implement. Using a C interface ensures compatibility across different C++ compilers and standard library versions.

Plugin Requirements:

  • Must export create_plugin() function
  • Must export destroy_plugin() function
  • Must export get_plugin_info() function
  • All exported functions must use C linkage (extern "C")
  • Must be compiled with the same plugin API version

Example Plugin Implementation:

#include "plugin_api.h"
class my_plugin : public collector_plugin {
// Implementation...
};
extern "C" {
PLUGIN_EXPORT collector_plugin* create_plugin() {
return new my_plugin();
}
PLUGIN_EXPORT void destroy_plugin(collector_plugin* plugin) {
delete plugin;
}
PLUGIN_EXPORT const plugin_metadata* get_plugin_info() {
static plugin_metadata metadata = {
"my_plugin",
"1.0.0",
"My Plugin Description"
};
return &metadata;
}
}
C API for dynamically loaded collector plugins.
#define PLUGIN_EXPORT
Definition plugin_api.h:65
#define PLUGIN_API_VERSION
Definition plugin_api.h:57

Definition in file plugin_api.h.

Macro Definition Documentation

◆ CREATE_PLUGIN_FN_NAME

#define CREATE_PLUGIN_FN_NAME   "create_plugin"

Plugin function names (for dlsym/GetProcAddress lookup)

Definition at line 140 of file plugin_api.h.

◆ DESTROY_PLUGIN_FN_NAME

#define DESTROY_PLUGIN_FN_NAME   "destroy_plugin"

Definition at line 141 of file plugin_api.h.

◆ GET_PLUGIN_INFO_FN_NAME

#define GET_PLUGIN_INFO_FN_NAME   "get_plugin_info"

Definition at line 142 of file plugin_api.h.

◆ PLUGIN_API_VERSION

#define PLUGIN_API_VERSION   1

Definition at line 57 of file plugin_api.h.

◆ PLUGIN_EXPORT

#define PLUGIN_EXPORT

Definition at line 65 of file plugin_api.h.

Typedef Documentation

◆ create_plugin_fn

typedef kcenon::monitoring::collector_plugin *(* create_plugin_fn) (void)

Create a plugin instance.

Returns
Pointer to newly created plugin instance

This function must be exported by all plugins. The returned pointer is managed by the plugin loader. Do NOT delete the returned pointer directly - use destroy_plugin() instead.

Note
This function should never return NULL. If initialization fails, the plugin should return a valid instance that reports errors through is_available() or initialize() methods.

Definition at line 111 of file plugin_api.h.

◆ destroy_plugin_fn

typedef void(* destroy_plugin_fn) (kcenon::monitoring::collector_plugin *plugin)

Destroy a plugin instance.

Parameters
pluginPlugin instance to destroy (created by create_plugin)

This function must be exported by all plugins. It is responsible for cleaning up all resources allocated by the plugin. After this call, the plugin pointer becomes invalid.

Note
This function must handle NULL pointers gracefully (no-op).

Definition at line 123 of file plugin_api.h.

◆ get_plugin_info_fn

typedef const plugin_api_metadata *(* get_plugin_info_fn) (void)

Get plugin API metadata.

Returns
Pointer to plugin API metadata structure

This function must be exported by all plugins. The returned pointer must remain valid for the lifetime of the plugin. The metadata is used to verify API version compatibility.

Note
The returned pointer should point to static storage.

Definition at line 135 of file plugin_api.h.

◆ plugin_api_metadata

typedef struct plugin_api_metadata plugin_api_metadata