rename mediator to EventChannel as it was named wrongly

This commit is contained in:
2018-11-30 23:10:58 +01:00
parent 128004f35f
commit 3cb4d61ad5
5 changed files with 17 additions and 11 deletions

31
src/EventChannel.h Normal file
View File

@@ -0,0 +1,31 @@
#ifndef __MEDIATOR__
#define __MEDIATOR__
#include <Arduino.h>
#include <ArduinoJson.h>
#include <list>
#include <functional>
#include <map>
#include <vector>
using namespace std;
typedef std::function<void(String msg)> subscriptionHandler_t;
class EventChannel {
public:
std::map<std::string, vector<subscriptionHandler_t>> 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