2 #include <unordered_map> 10 namespace event_emitter {
21 listeners_[event][listener_id] = listener;
26 if (listeners_.count(event) == 0)
28 listeners_[event].erase(
id);
32 void emit_(EvtType event, Args... args) {
33 if (listeners_.count(event) == 0)
35 for (
const auto &listener : listeners_[event]) {
36 listener.second(args...);
42 if (listeners_[event].size() == std::numeric_limits<EventEmitterListenerID>::max()) {
50 while (listeners_[event].count(next_id) > 0) {
51 next_id = (next_id + 1) % std::numeric_limits<EventEmitterListenerID>::max();
53 current_id_ = next_id;
58 std::unordered_map<EvtType, std::unordered_map<
EventEmitterListenerID, std::function<void(Args...)>>> listeners_;
59 EventEmitterListenerID current_id_ = 0;
void raise_event_emitter_full_error()
EventEmitterListenerID on(EvtType event, std::function< void(Args...)> listener)
void off(EvtType event, EventEmitterListenerID id)
EventEmitterListenerID get_next_id_(EvtType event)
uint32_t EventEmitterListenerID
void emit_(EvtType event, Args... args)
Implementation of SPI Controller mode.