#ifndef IPC_H
|
#define IPC_H
|
|
#include <queue>
|
#include <mutex>
|
#include <condition_variable>
|
#include <memory>
|
#include <optional>
|
#include "tser/tser.hpp"
|
#include "Serialize.h"
|
#include "PluginInterface.h" // Include your IPlugin interface header
|
#include "Command.h" // Include your Command structure header
|
#include <glog/logging.h>
|
|
class IPC
|
{
|
public:
|
IPC();
|
~IPC();
|
|
void registerHandler(std::shared_ptr<IPlugin> handler);
|
void sendMessage(const Command &cmd);
|
std::optional<Command> receiveMessage();
|
|
private:
|
std::queue<std::string> messageQueue;
|
std::vector<std::shared_ptr<IPlugin>> handlers;
|
std::mutex queueMutex;
|
std::condition_variable queueCondVar;
|
};
|
|
#endif // IPC_H
|