Manages the sending, receiving and processing of asynchronous events.
Examples
Creating an Event
int data = 42;
Event e {
recipientID,
EventType::SPACE_NEW_ENTITY,
std::make_shared<int>(42)
}
Pushing Events onto the EventStream
EventStream stream;
Event event{};
stream.push(event, StreamType::INCOMING);
std::vector<Event> events
stream.pushEvents(events, StreamType::INCOMING)
Popping Events from the EventStream
EventStream stream;
Event event = stream.pop(StreamType::INCOMING);
std::vector<Event> events = stream.popEvents(StreamType::INCOMING)
Processing Events
Events in an EventStreams are processed by being passed though an appropriate handler for their event type.
const EventType MY_EVENT_TYPE{"MyEvent"}
struct MyEventData
{
std::string text;
};
EventStream stream;
EventHandler handler = [](const Event &e){
MyEventData data = std::static_ptr_cast<MyEventData>(e.data);
std::cout << data->text << std::endl;
};
stream.registerHandler(MY_EVENT_TYPE, handler);
stream.processEvents();