#pragma once #include #include #include namespace blitz { namespace network { class EnetClient : private NonCopyable { public: EnetClient(const Nz::IpAddress& address); ~EnetClient(); void Disconnect(); NazaraSignal(OnConnect); NazaraSignal(OnDisconnect); NazaraSignal(OnDisconnectTimeout); EnetConnection& GetConnection() { return m_Connection; } private: EnetConnection m_Connection; Nz::ENetHost m_Host; Nz::ENetPeer* m_Peer; std::jthread m_Thread; bool m_Running; void Update(); void WorkerThread(); }; } // namespace network } // namespace blitz