27 {
28 std::cout << "=== Event Bus Example ===" << std::endl;
29
30
35
36 auto bus = std::make_shared<event_bus>(bus_config);
37
38
39 std::cout << "\nExample 1: Performance Alert Monitoring" << std::endl;
40
43 std::cout << " Alert: " << event.get_message()
44 << " (Component: " << event.get_component() << ")" << std::endl;
45 },
46 event_priority::high
47 );
48
49
51 performance_alert_event::alert_type::high_cpu_usage,
52 performance_alert_event::alert_severity::warning,
53 "main_processor",
54 "CPU usage exceeds 80%",
55 80.0,
56 85.5
57 );
58
59 bus->publish_event(
alert);
60 std::this_thread::sleep_for(100ms);
61
62
63 std::cout << "\nExample 2: System Resource Monitoring" << std::endl;
64
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;
71 }
72 );
73
74
77 resources.memory_used_bytes = 1024 * 1024 * 512;
78 resources.memory_total_bytes = 1024 * 1024 * 1024 * 8;
79
81 std::this_thread::sleep_for(100ms);
82
83
84 std::cout << "\nExample 3: Component Lifecycle Tracking" << std::endl;
85
88 std::cout << " Component '" << event.get_component()
89 << "' changed from "
90 << static_cast<int>(event.get_old_state())
91 << " to "
92 << static_cast<int>(event.get_new_state()) << std::endl;
93 }
94 );
95
96
98 "database_connector",
99 component_lifecycle_event::lifecycle_state::stopped,
100 component_lifecycle_event::lifecycle_state::initializing
101 ));
102
104 "database_connector",
105 component_lifecycle_event::lifecycle_state::initializing,
106 component_lifecycle_event::lifecycle_state::running
107 ));
108
109 std::this_thread::sleep_for(100ms);
110
111
112 std::cout << "\nExample 4: Thread System Adapter" << std::endl;
113
115
116 if (thread_adapter.is_thread_system_available()) {
117 std::cout << " Thread system is available" << std::endl;
118
119
122 thread_adapter.start_collection(config);
123
124 std::this_thread::sleep_for(3s);
125
126 thread_adapter.stop_collection();
127 } else {
128 std::cout << " Thread system is not available (expected)" << std::endl;
129 }
130
131
132 std::cout << "\nExample 5: Logger System Adapter" << std::endl;
133
135
136 if (logger_adapter.is_logger_system_available()) {
137 std::cout << " Logger system is available" << std::endl;
138 } else {
139 std::cout << " Logger system is not available (expected)" << std::endl;
140 }
141
142
143 std::cout << "\nExample 6: Event Bus Statistics" << std::endl;
144
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;
151
152
153 std::cout << "\nExample 7: Health Check Events" << std::endl;
154
157 auto overall = event.get_overall_status();
158 std::cout << " Health check for '" << event.get_component() << "': ";
159 switch (overall) {
160 case health_check_event::health_status::healthy:
161 std::cout << "HEALTHY" << std::endl;
162 break;
163 case health_check_event::health_status::degraded:
164 std::cout << "DEGRADED" << std::endl;
165 break;
166 case health_check_event::health_status::unhealthy:
167 std::cout << "UNHEALTHY" << std::endl;
168 break;
169 default:
170 std::cout << "UNKNOWN" << std::endl;
171 }
172 }
173 );
174
175
176 std::vector<health_check_event::health_check_result> health_results;
177
180 db_check.
status = health_check_event::health_status::healthy;
181 db_check.
message =
"Connection OK";
183 health_results.push_back(db_check);
184
187 api_check.
status = health_check_event::health_status::degraded;
188 api_check.
message =
"Slow response";
190 health_results.push_back(api_check);
191
193 std::this_thread::sleep_for(100ms);
194
195
196 std::cout << "\nStopping event bus..." << std::endl;
197 bus->stop();
198
199 std::cout << "✅ Event bus example completed successfully!" << std::endl;
200
201 return 0;
202}
Event for component lifecycle changes.
Event for health check results.
Logger system adapter using dependency injection (Phase 2.3.3)
Event containing system resource metrics.
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