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