#include "IPC.h" IPC::IPC() {} void IPC::registerHandler(std::shared_ptr handler) { handlers.push_back(handler); } void IPC::sendMessage(const Command& cmd) { { std::lock_guard lock(queueMutex); messageQueue.push(cmd); } queueCondVar.notify_one(); } std::optional IPC::receiveMessage() { std::unique_lock lock(queueMutex); queueCondVar.wait(lock, [this] { return !messageQueue.empty(); }); if (!messageQueue.empty()) { Command cmd = messageQueue.front(); messageQueue.pop(); return cmd; } return std::nullopt; }