#pragma once #include #include #include #include #include #include #include #include class MessageBroker { public: using MessageCallback = std::function; void publish(const std::string &message); void subscribe(const MessageCallback &callback); void start(); void stop(); private: std::queue messageQueue; std::vector subscribers; std::mutex mutex; std::condition_variable cv; std::atomic running{false}; std::thread brokerThread; void processMessages(); };