#pragma once #include #include #include "../defines.hpp" #include "../helpers/memory/SharedPtr.hpp" struct SHyprIPCEvent { std::string event; std::string data; }; class CEventManager { public: CEventManager(); ~CEventManager(); void postEvent(const SHyprIPCEvent& event); private: std::string formatEvent(const SHyprIPCEvent& event) const; static int onServerEvent(int fd, uint32_t mask, void* data); static int onClientEvent(int fd, uint32_t mask, void* data); int onServerEvent(int fd, uint32_t mask); int onClientEvent(int fd, uint32_t mask); struct SClient { int fd = -1; std::deque> events; wl_event_source* eventSource = nullptr; }; std::vector::iterator findClientByFD(int fd); std::vector::iterator removeClientByFD(int fd); private: int m_iSocketFD = -1; wl_event_source* m_pEventSource = nullptr; std::vector m_vClients; }; inline std::unique_ptr g_pEventManager;