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

Unified factory for metric collector instantiation. More...

#include <functional>
#include <memory>
#include <mutex>
#include <string>
#include <unordered_map>
#include <vector>
#include "../utils/config_parser.h"
Include dependency graph for metric_factory.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_interface
 Base interface for type-erased collectors. More...
 
struct  kcenon::monitoring::create_result
 Result of collector creation. More...
 
class  kcenon::monitoring::metric_factory
 Unified factory for metric collector instantiation. More...
 

Namespaces

namespace  kcenon
 
namespace  kcenon::monitoring
 

Macros

#define REGISTER_COLLECTOR(CollectorType)
 Helper macro for registering collectors at static initialization.
 

Typedefs

using kcenon::monitoring::collector_factory_fn = std::function<std::unique_ptr<collector_interface>()>
 Factory function type for creating collectors.
 

Detailed Description

Unified factory for metric collector instantiation.

This file provides a factory pattern implementation for creating and configuring metric collectors. It centralizes collector creation, reduces configuration duplication, and ensures consistent initialization.

Usage:

auto& factory = metric_factory::instance();
// Create a collector with configuration
config_map config = {{"enabled", "true"}};
auto collector = factory.create("system_resource_collector", config);
// Register a custom collector
factory.register_collector("my_collector", []() {
return std::make_unique<my_collector>();
});

Definition in file metric_factory.h.

Macro Definition Documentation

◆ REGISTER_COLLECTOR

#define REGISTER_COLLECTOR ( CollectorType)
Value:
namespace { \
static const bool CollectorType##_registered = []() { \
.register_collector<CollectorType>(#CollectorType); \
}(); \
}
static metric_factory & instance()
Get the singleton instance.
bool register_collector(const std::string &name, collector_factory_fn factory)
Register a collector factory function.

Helper macro for registering collectors at static initialization.

Usage:

REGISTER_COLLECTOR(my_collector);
#define REGISTER_COLLECTOR(CollectorType)
Helper macro for registering collectors at static initialization.

Definition at line 312 of file metric_factory.h.

312#define REGISTER_COLLECTOR(CollectorType) \
313 namespace { \
314 static const bool CollectorType##_registered = []() { \
315 return kcenon::monitoring::metric_factory::instance() \
316 .register_collector<CollectorType>(#CollectorType); \
317 }(); \
318 }