#pragma once #include #include #include #include "Thread.h" #include "events.h" #include "concurrentqueue.h" namespace piscan { class EventBroker : public WorkerThread { public: static std::shared_ptr instance(); EventBroker(); virtual ~EventBroker(){}; void publish(events::EventPtr event); void subscribe(std::string topic, events::EventHandler handler); protected: //EventBroker(); void main(); private: static std::shared_ptr _instance; moodycamel::ConcurrentQueue _eventQueue; std::map> _handlers; }; }