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