|
| 1 | +#include "libcpp-event-hub.hpp" |
| 2 | +#include <string> |
| 3 | +#include <iostream> |
| 4 | + |
| 5 | +using namespace lklibs; |
| 6 | + |
| 7 | +int main() |
| 8 | +{ |
| 9 | + // Get the singleton instance of the EventHub |
| 10 | + auto& eventHub = EventHub::getInstance(); |
| 11 | + |
| 12 | + // Add a listener for testEvent1, which sends a string value |
| 13 | + auto listener1Id = eventHub.addListener<std::string>("testEvent1", [](const std::string& eventName, const std::string& sender, const std::string& data) |
| 14 | + { |
| 15 | + std::cout << "1. listener received, Event name: " << eventName << ", sender: " << sender << ", data: " << data << std::endl; |
| 16 | + }); |
| 17 | + |
| 18 | + // Add a listener for testEvent2, which sends an int value |
| 19 | + auto listener2Id = eventHub.addListener<int>("testEvent2", [](const std::string& eventName, const std::string& sender, const int& data) |
| 20 | + { |
| 21 | + std::cout << "2 listener received, Event name: " << eventName << ", sender: " << sender << ", data: " << data << std::endl; |
| 22 | + }); |
| 23 | + |
| 24 | + // Add a general listener for all events with a string value |
| 25 | + auto listener3Id = eventHub.addListener<std::string>("*", [](const std::string& eventName, const std::string& sender, const std::string& data) |
| 26 | + { |
| 27 | + std::cout << "General listener received: " << eventName << ", sender: " << sender << ", data: " << data << std::endl; |
| 28 | + }); |
| 29 | + |
| 30 | + // Emit testEvent1 with a string value, 2 listeners will receive the event (listener1 and the general listener) |
| 31 | + eventHub.emit("testEvent1", "main", std::string("Value 1")); |
| 32 | + |
| 33 | + // Emit testEvent2 with an int value, 1 listeners will receive the event (listener2), because there is no general listener for int values |
| 34 | + eventHub.emit("testEvent2", "main", 7); |
| 35 | + |
| 36 | + // Remove the first listener for testEvent1 |
| 37 | + eventHub.removeListener("testEvent1", listener1Id); |
| 38 | + |
| 39 | + // Emit testEvent1 again, only the general listener will receive the event |
| 40 | + eventHub.emit("testEvent1", "main", std::string("Value 2")); |
| 41 | + |
| 42 | + return 0; |
| 43 | +} |
0 commit comments