#include #include #include namespace blitz { namespace server { KeepAliveHandler::KeepAliveHandler(network::EnetConnection& a_Connection, EnttWorld& a_World) : protocol::PacketHandler(a_Connection, a_World) { m_Slot.Connect(a_Connection.OnKeepAlive, [this](const protocol::data::KeepAlive& a_KeepAlive) { Handle(m_Connection.GetPeerId(), a_KeepAlive); }); } KeepAliveHandler::~KeepAliveHandler() {} void KeepAliveHandler::Handle(std::uint16_t a_PeerId, const protocol::data::KeepAlive& a_KeepAlive) { AtomicEnttWorld world = m_World; world->GetRegistry().view().each([a_PeerId, &a_KeepAlive](auto& keepAliveSession) { if (keepAliveSession.m_PeerId == a_PeerId && keepAliveSession.m_LastKeepAliveId == a_KeepAlive.m_KeepAliveId) { keepAliveSession.m_LastTime = Nz::GetElapsedMilliseconds(); keepAliveSession.m_RecievedResponse = true; } }); } } // namespace server } // namespace blitz