#ifndef IPC_H
|
#define IPC_H
|
|
#include <msgpack.h>
|
#include <optional>
|
#include <queue>
|
#include <mutex>
|
#include <condition_variable>
|
#include "Command.h"
|
#include "PluginInterface.h"
|
|
class IPC {
|
public:
|
IPC();
|
void registerHandler(std::shared_ptr<IPlugin> handler);
|
void sendMessage(const Command& cmd);
|
std::optional<Command> receiveMessage();
|
|
private:
|
std::queue<Command> messageQueue;
|
std::mutex queueMutex;
|
std::condition_variable queueCondVar;
|
std::vector<std::shared_ptr<IPlugin>> handlers;
|
};
|
|
#endif // IPC_H
|