#include <iostream>
#include <thread>
#include <chrono>
using namespace std::chrono_literals;
std::cout << "=== Event Bus Example ===" << std::endl;
auto bus = std::make_shared<event_bus>(bus_config);
std::cout << "\nExample 1: Performance Alert Monitoring" << std::endl;
std::cout << " Alert: " << event.get_message()
<< " (Component: " << event.get_component() << ")" << std::endl;
},
event_priority::high
);
performance_alert_event::alert_type::high_cpu_usage,
performance_alert_event::alert_severity::warning,
"main_processor",
"CPU usage exceeds 80%",
80.0,
85.5
);
bus->publish_event(
alert);
std::this_thread::sleep_for(100ms);
std::cout << "\nExample 2: System Resource Monitoring" << std::endl;
auto stats = event.get_stats();
std::cout << " Resource Update:" << std::endl;
std::cout << " CPU: " << stats.cpu_usage_percent << "%" << std::endl;
std::cout << " Memory: " << stats.memory_used_bytes / (1024*1024) << " MB" << std::endl;
}
);
resources.memory_used_bytes = 1024 * 1024 * 512;
resources.memory_total_bytes = 1024 * 1024 * 1024 * 8;
std::this_thread::sleep_for(100ms);
std::cout << "\nExample 3: Component Lifecycle Tracking" << std::endl;
std::cout << " Component '" << event.get_component()
<< "' changed from "
<< static_cast<int>(event.get_old_state())
<< " to "
<< static_cast<int>(event.get_new_state()) << std::endl;
}
);
"database_connector",
component_lifecycle_event::lifecycle_state::stopped,
component_lifecycle_event::lifecycle_state::initializing
));
"database_connector",
component_lifecycle_event::lifecycle_state::initializing,
component_lifecycle_event::lifecycle_state::running
));
std::this_thread::sleep_for(100ms);
std::cout << "\nExample 4: Thread System Adapter" << std::endl;
std::cout << " Thread system is available" << std::endl;
std::this_thread::sleep_for(3s);
} else {
std::cout << " Thread system is not available (expected)" << std::endl;
}
std::cout << "\nExample 5: Logger System Adapter" << std::endl;
std::cout << " Logger system is available" << std::endl;
} else {
std::cout << " Logger system is not available (expected)" << std::endl;
}
std::cout << "\nExample 6: Event Bus Statistics" << std::endl;
auto stats = bus->get_stats();
std::cout << " Total published: " << stats.total_published << std::endl;
std::cout << " Total processed: " << stats.total_processed << std::endl;
std::cout << " Total dropped: " << stats.total_dropped << std::endl;
std::cout << " Queue size: " << stats.current_queue_size << std::endl;
std::cout << " Subscribers: " << stats.subscriber_count << std::endl;
std::cout << "\nExample 7: Health Check Events" << std::endl;
auto overall = event.get_overall_status();
std::cout << " Health check for '" << event.get_component() << "': ";
switch (overall) {
case health_check_event::health_status::healthy:
std::cout << "HEALTHY" << std::endl;
break;
case health_check_event::health_status::degraded:
std::cout << "DEGRADED" << std::endl;
break;
case health_check_event::health_status::unhealthy:
std::cout << "UNHEALTHY" << std::endl;
break;
default:
std::cout << "UNKNOWN" << std::endl;
}
}
);
std::vector<health_check_event::health_check_result> health_results;
db_check.
status = health_check_event::health_status::healthy;
db_check.
message =
"Connection OK";
health_results.push_back(db_check);
api_check.
status = health_check_event::health_status::degraded;
api_check.
message =
"Slow response";
health_results.push_back(api_check);
std::this_thread::sleep_for(100ms);
std::cout << "\nStopping event bus..." << std::endl;
bus->stop();
std::cout << "✅ Event bus example completed successfully!" << std::endl;
return 0;
}
Event for component lifecycle changes.
Event for health check results.
Logger system adapter using dependency injection (Phase 2.3.3)
bool is_logger_system_available() const
Check if logger is available.
Event containing system resource metrics.
bool is_thread_system_available() const
common::VoidResult stop_collection()
common::VoidResult start_collection(const collection_config &cfg)
Lightweight event bus implementation for monitoring system.
Common event type definitions for monitoring system.
Consolidated logger system adapters for monitoring_system.
Core alert data structure.
Configuration for metric collection.
std::chrono::milliseconds interval
Configuration for event bus.
size_t worker_thread_count
std::chrono::milliseconds response_time
Consolidated thread system adapters for monitoring_system.