#pragma once namespace Components { class IPCHandler : public Component { public: typedef Utils::Slot Callback; IPCHandler(); ~IPCHandler(); #if defined(DEBUG) || defined(FORCE_UNIT_TESTS) const char* getName() override { return "IPCHandler"; }; #endif void SendWorker(std::string message, std::string data); void SendClient(std::string message, std::string data); void OnWorker(std::string message, Callback callback); void OnClient(std::string message, Callback callback); private: static std::unique_ptr WorkerChannel; static std::unique_ptr ClientChannel; static std::unordered_map WorkerCallbacks; static std::unordered_map ClientCallbacks; static void InitChannels(); static void StartWorker(); }; }