20#ifdef USE_THREAD_SYSTEM
21#include <kcenon/thread/interfaces/monitorable_interface.h>
45 kcenon::thread::monitorable_interface* monitorable)
50 throw std::invalid_argument(
"Monitorable cannot be null");
90 for (
const auto& [key, value] : ts_metrics.value().get_values()) {
97 if (fallback_result) {
98 for (
const auto& metric : fallback_result.value().get_metrics()) {
132 auto status = ts_health.value();
134 if (!status.is_healthy()) {
135 result.set_status(health_status::degraded);
136 result.add_issue(
"Thread system reports unhealthy status");
138 for (
const auto& issue : status.get_issues()) {
139 result.add_issue(
"Thread system: " + issue);
144 result.add_issue(
"Failed to check thread_system health");
151 if (fallback_health) {
152 auto& fb_result = fallback_health.value();
155 if (!fb_result.is_healthy()) {
156 if (
result.get_status() == health_status::healthy) {
157 result.set_status(fb_result.get_status());
158 }
else if (fb_result.get_status() == health_status::unhealthy) {
159 result.set_status(health_status::unhealthy);
163 for (
const auto& issue : fb_result.get_issues()) {
171 if (
result.is_healthy()) {
172 result.set_message(
"All systems operational");
174 result.set_message(
"Issues detected in monitoring");
191 if (ts_result.is_err()) {
202 if (fb_result.is_err() &&
result.is_ok()) {
239 return "thread_system+basic";
241 return "basic(via adapter)";
310 bool take_ownership =
false) {
Basic monitoring implementation with no external dependencies.
Basic monitoring implementation.
void add_metric(const std::string &name, double value, metric_type type=metric_type::gauge)
Add a metric to the collection.
Abstract monitoring interface.
Adapter to use thread_system's monitoring capabilities.
basic_monitor * get_fallback_monitor()
Get the fallback monitor for direct access.
thread_system_monitor_adapter()
Default constructor with fallback to basic monitor.
std::atomic< bool > enabled_
kcenon::thread::monitorable_interface * monitorable_
result< monitoring_data > collect_metrics() const override
Collect current metrics.
bool is_enabled() const override
Check if monitoring is enabled.
~thread_system_monitor_adapter() override
Destructor.
common::VoidResult set_enabled(bool enable) override
Enable or disable monitoring.
void update_gauge(const std::string &name, double value) override
Update a gauge.
thread_system_monitor_adapter(kcenon::thread::monitorable_interface *monitorable)
Constructor with external monitorable.
common::VoidResult reset_metrics() override
Reset all metrics.
void record_histogram(const std::string &name, double value) override
Record a histogram value.
result< health_check_result > check_health() const override
Perform health check.
void increment_counter(const std::string &name, double value=1.0) override
Increment a counter.
void set_monitorable(kcenon::thread::monitorable_interface *monitorable, bool take_ownership=false)
Set the thread_system monitorable.
std::string get_backend_name() const override
Get backend name.
std::unique_ptr< basic_monitor > fallback_monitor_
Abstract interface for monitoring and metrics collection.
common::VoidResult make_logger_void_result(logger_error_code code, const std::string &message="")
Conditionally enables thread_system integration when available.