Logger System 0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
Loading...
Searching...
No Matches
example_monitor Class Reference

Example monitor implementation demonstrating IMonitor interface. More...

Inheritance diagram for example_monitor:
Inheritance graph
Collaboration diagram for example_monitor:
Collaboration graph

Public Member Functions

kcenon::common::VoidResult record_metric (const std::string &name, double value) override
 
kcenon::common::VoidResult record_metric (const std::string &name, double value, const std::unordered_map< std::string, std::string > &tags) override
 
kcenon::common::Result< ci::metrics_snapshot > get_metrics () override
 
kcenon::common::Result< ci::health_check_result > check_health () override
 
kcenon::common::VoidResult reset () override
 
size_t get_metric_count () const
 

Private Attributes

std::unordered_map< std::string, double > metrics_
 
std::mutex metrics_mutex_
 
size_t metric_count_ = 0
 

Detailed Description

Example monitor implementation demonstrating IMonitor interface.

This is a simple in-memory monitor that tracks metrics without requiring a full monitoring_system dependency.

Examples
di_pattern_example.cpp.

Definition at line 100 of file di_pattern_example.cpp.

Member Function Documentation

◆ check_health()

kcenon::common::Result< ci::health_check_result > example_monitor::check_health ( )
inlineoverride
Examples
di_pattern_example.cpp.

Definition at line 157 of file di_pattern_example.cpp.

157 {
158 ci::health_check_result result;
159 result.timestamp = std::chrono::system_clock::now();
160 result.status = ci::health_status::healthy;
161 result.message = "Example monitor operational";
162 result.metadata["metrics_count"] = std::to_string(metric_count_);
163
165 }

References metric_count_.

◆ get_metric_count()

size_t example_monitor::get_metric_count ( ) const
inline
Examples
di_pattern_example.cpp.

Definition at line 176 of file di_pattern_example.cpp.

176 {
177 std::lock_guard<std::mutex> lock(metrics_mutex_);
178 return metric_count_;
179 }

References metric_count_, and metrics_mutex_.

◆ get_metrics()

kcenon::common::Result< ci::metrics_snapshot > example_monitor::get_metrics ( )
inlineoverride
Examples
di_pattern_example.cpp.

Definition at line 143 of file di_pattern_example.cpp.

143 {
144 std::lock_guard<std::mutex> lock(metrics_mutex_);
145
146 ci::metrics_snapshot snapshot;
147 snapshot.source_id = "example_monitor";
148 snapshot.capture_time = std::chrono::system_clock::now();
149
150 for (const auto& [name, value] : metrics_) {
151 snapshot.add_metric(name, value);
152 }
153
154 return kcenon::common::Result<ci::metrics_snapshot>::ok(std::move(snapshot));
155 }
std::unordered_map< std::string, double > metrics_

References metrics_, and metrics_mutex_.

◆ record_metric() [1/2]

kcenon::common::VoidResult example_monitor::record_metric ( const std::string & name,
double value )
inlineoverride
Examples
di_pattern_example.cpp.

Definition at line 107 of file di_pattern_example.cpp.

110 {
111 std::lock_guard<std::mutex> lock(metrics_mutex_);
112 metrics_[name] = value;
114
115 std::cout << "[Monitor] Recorded metric: " << name
116 << " = " << value << std::endl;
117
118 return kcenon::common::ok();
119 }
VoidResult ok()

References metric_count_, metrics_, metrics_mutex_, and kcenon::common::ok().

Here is the call graph for this function:

◆ record_metric() [2/2]

kcenon::common::VoidResult example_monitor::record_metric ( const std::string & name,
double value,
const std::unordered_map< std::string, std::string > & tags )
inlineoverride

Definition at line 121 of file di_pattern_example.cpp.

125 {
126 std::lock_guard<std::mutex> lock(metrics_mutex_);
127
128 // Create tagged metric name
129 std::string tagged_name = name;
130 for (const auto& [key, val] : tags) {
131 tagged_name += "." + key + ":" + val;
132 }
133
134 metrics_[tagged_name] = value;
136
137 std::cout << "[Monitor] Recorded tagged metric: " << tagged_name
138 << " = " << value << std::endl;
139
140 return kcenon::common::ok();
141 }

References metric_count_, metrics_, metrics_mutex_, and kcenon::common::ok().

Here is the call graph for this function:

◆ reset()

kcenon::common::VoidResult example_monitor::reset ( )
inlineoverride
Examples
di_pattern_example.cpp.

Definition at line 167 of file di_pattern_example.cpp.

167 {
168 std::lock_guard<std::mutex> lock(metrics_mutex_);
169 metrics_.clear();
170 metric_count_ = 0;
171
172 std::cout << "[Monitor] Metrics reset" << std::endl;
173 return kcenon::common::ok();
174 }

References metric_count_, metrics_, metrics_mutex_, and kcenon::common::ok().

Here is the call graph for this function:

Member Data Documentation

◆ metric_count_

size_t example_monitor::metric_count_ = 0
private

◆ metrics_

std::unordered_map<std::string, double> example_monitor::metrics_
private
Examples
di_pattern_example.cpp.

Definition at line 102 of file di_pattern_example.cpp.

Referenced by get_metrics(), record_metric(), record_metric(), and reset().

◆ metrics_mutex_

std::mutex example_monitor::metrics_mutex_
mutableprivate

The documentation for this class was generated from the following file: