28 std::cout <<
"=== Event Bus Example ===" << std::endl;
36 auto bus = std::make_shared<event_bus>(bus_config);
39 std::cout <<
"\nExample 1: Performance Alert Monitoring" << std::endl;
43 std::cout <<
" Alert: " <<
event.get_message()
44 <<
" (Component: " <<
event.get_component() <<
")" << std::endl;
51 performance_alert_event::alert_type::high_cpu_usage,
52 performance_alert_event::alert_severity::warning,
54 "CPU usage exceeds 80%",
59 bus->publish_event(
alert);
60 std::this_thread::sleep_for(100ms);
63 std::cout <<
"\nExample 2: System Resource Monitoring" << std::endl;
67 auto stats =
event.get_stats();
68 std::cout <<
" Resource Update:" << std::endl;
69 std::cout <<
" CPU: " << stats.cpu_usage_percent <<
"%" << std::endl;
70 std::cout <<
" Memory: " << stats.memory_used_bytes / (1024*1024) <<
" MB" << std::endl;
77 resources.memory_used_bytes = 1024 * 1024 * 512;
78 resources.memory_total_bytes = 1024 * 1024 * 1024 * 8;
81 std::this_thread::sleep_for(100ms);
84 std::cout <<
"\nExample 3: Component Lifecycle Tracking" << std::endl;
88 std::cout <<
" Component '" <<
event.get_component()
90 <<
static_cast<int>(
event.get_old_state())
92 <<
static_cast<int>(
event.get_new_state()) << std::endl;
99 component_lifecycle_event::lifecycle_state::stopped,
100 component_lifecycle_event::lifecycle_state::initializing
104 "database_connector",
105 component_lifecycle_event::lifecycle_state::initializing,
106 component_lifecycle_event::lifecycle_state::running
109 std::this_thread::sleep_for(100ms);
112 std::cout <<
"\nExample 4: Thread System Adapter" << std::endl;
117 std::cout <<
" Thread system is available" << std::endl;
124 std::this_thread::sleep_for(3s);
128 std::cout <<
" Thread system is not available (expected)" << std::endl;
132 std::cout <<
"\nExample 5: Logger System Adapter" << std::endl;
137 std::cout <<
" Logger system is available" << std::endl;
139 std::cout <<
" Logger system is not available (expected)" << std::endl;
143 std::cout <<
"\nExample 6: Event Bus Statistics" << std::endl;
145 auto stats = bus->get_stats();
146 std::cout <<
" Total published: " << stats.total_published << std::endl;
147 std::cout <<
" Total processed: " << stats.total_processed << std::endl;
148 std::cout <<
" Total dropped: " << stats.total_dropped << std::endl;
149 std::cout <<
" Queue size: " << stats.current_queue_size << std::endl;
150 std::cout <<
" Subscribers: " << stats.subscriber_count << std::endl;
153 std::cout <<
"\nExample 7: Health Check Events" << std::endl;
157 auto overall =
event.get_overall_status();
158 std::cout <<
" Health check for '" <<
event.get_component() <<
"': ";
160 case health_check_event::health_status::healthy:
161 std::cout <<
"HEALTHY" << std::endl;
163 case health_check_event::health_status::degraded:
164 std::cout <<
"DEGRADED" << std::endl;
166 case health_check_event::health_status::unhealthy:
167 std::cout <<
"UNHEALTHY" << std::endl;
170 std::cout <<
"UNKNOWN" << std::endl;
176 std::vector<health_check_event::health_check_result> health_results;
180 db_check.
status = health_check_event::health_status::healthy;
181 db_check.
message =
"Connection OK";
183 health_results.push_back(db_check);
187 api_check.
status = health_check_event::health_status::degraded;
188 api_check.
message =
"Slow response";
190 health_results.push_back(api_check);
193 std::this_thread::sleep_for(100ms);
196 std::cout <<
"\nStopping event bus..." << std::endl;
199 std::cout <<
"✅ Event bus example completed successfully!" << std::endl;