41{
42 std::cout << "=== Event Bus Example ===\n\n";
43
45
46
47 std::cout << "1. Subscribing to events...\n";
50 { std::cout << " [Auth] User '" << e.username << "' logged in from " << e.ip_address << "\n"; });
51
54 { std::cout << " [Audit] Login recorded for '" << e.username << "'\n"; });
55
56
59 { std::cout << " [Orders] Order #" << e.order_id << " placed, total: $" << e.total << "\n"; });
60
61
62 bus.set_error_callback([](const std::string& error, size_t, uint64_t)
63 { std::cerr <<
" [Error] Event bus error: " <<
error <<
"\n"; });
64
65
66 std::cout << "\n2. Publishing events...\n";
69
70
71 std::cout << "\n3. Unsubscribing audit logger...\n";
72 bus.unsubscribe(audit_sub);
73
74
75 std::cout << "\n4. Publishing after unsubscribe...\n";
77
78
79 std::cout << "\n5. Priority-ordered publishing...\n";
82 { std::cout << " [Alert] severity=" << e.severity << ": " << e.message << "\n"; });
83
84 bus.publish(
system_alert{
"CPU usage high", 2}, event_priority::high);
85 bus.publish(
system_alert{
"Disk space low", 1}, event_priority::normal);
86
87
88 bus.unsubscribe(login_sub);
89 bus.unsubscribe(order_sub);
90 bus.unsubscribe(alert_sub);
91
92 std::cout << "\nDone.\n";
93 return 0;
94}
simple_event_bus & get_event_bus()
Access the global event bus instance.