/* * ===================================================================================== * * Filename: pubsub_center.h * * Description: * * Version: 1.0 * Created: 2021年04月01日 09时29分39秒 * Revision: none * Compiler: gcc * * Author: Li Chao (), * Organization: * * ===================================================================================== */ #ifndef PUBSUB_CENTER_MFSUZJU7 #define PUBSUB_CENTER_MFSUZJU7 #include "defs.h" #include "socket.h" #include #include #include using namespace bhome_shm; // publish/subcribe manager. class PubSubCenter { class SocketBus : public ShmSocket { public: SocketBus(SharedMemory &shm) : ShmSocket(shm, &kBHBusQueueId, 1000) {} using ShmSocket::shm; }; SocketBus socket_; std::mutex mutex_; typedef std::set Clients; std::unordered_map records_; ShmSocket::Shm &shm() { return socket_.shm(); } public: PubSubCenter(SharedMemory &shm); PubSubCenter() : PubSubCenter(BHomeShm()) {} ~PubSubCenter() { Stop(); } bool Start(const int nworker = 2); bool Stop() { return socket_.Stop(); } }; #endif // end of include guard: PUBSUB_CENTER_MFSUZJU7