#ifndef __MEDIATOR__ #define __MEDIATOR__ #include #include #include #include #include #include using namespace std; typedef std::function subscriptionHandler_t; class EventChannel { public: std::map> subscriptions; void subscribe(String topic, subscriptionHandler_t handler) { subscriptions[topic.c_str()].reserve(1); subscriptions[topic.c_str()].push_back(handler); } void publish(String topic, String msg) { if (subscriptions.find(topic.c_str()) != subscriptions.end()){ for(subscriptionHandler_t h : subscriptions[topic.c_str()]){ h(msg); } } } }; #endif