#pragma once #include #include #include #include #include #include #include namespace blitz { namespace network { class EnetServer : private NonCopyable { public: EnetServer(std::uint16_t port); ~EnetServer(); void Destroy(); void BroadcastPacket(const protocol::Packet& a_Packet, Nz::ENetPacketFlags a_Flags); EnetConnexion* GetConnexion(std::uint16_t a_PeerId); NazaraSignal(OnClientConnect, EnetConnexion& /*a_Peer*/); NazaraSignal(OnClientDisconnect, EnetConnexion& /*a_Peer*/); NazaraSignal(OnClientDisconnectTimeout, EnetConnexion& /*a_Peer*/); private: void Update(); void WorkerThread(); void RemoveConnexion(std::uint16_t a_PeerId); Nz::ENetHost m_Host; bool m_Running; std::thread m_Thread; std::map m_Connexion; }; } // namespace network } // namespace blitz