From 8225ad3b41708724bbfbce62a62943698e6e8c75 Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 15 Feb 2017 08:27:15 +0100 Subject: [PATCH] Network/ENetHost: Optimize acknowledgements handling --- include/Nazara/Network/ENetPeer.hpp | 2 +- src/Nazara/Network/ENetHost.cpp | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/Nazara/Network/ENetPeer.hpp b/include/Nazara/Network/ENetPeer.hpp index 2d11f17a0..a9f2a0219 100644 --- a/include/Nazara/Network/ENetPeer.hpp +++ b/include/Nazara/Network/ENetPeer.hpp @@ -178,13 +178,13 @@ namespace Nz ENetHost* m_host; IpAddress m_address; /**< Internet address of the peer */ std::array m_unsequencedWindow; - std::list m_acknowledgements; std::list m_dispatchedCommands; std::list m_outgoingReliableCommands; std::list m_outgoingUnreliableCommands; std::list m_sentReliableCommands; std::list m_sentUnreliableCommands; std::size_t m_totalWaitingData; + std::vector m_acknowledgements; std::vector m_channels; MemoryPool m_packetPool; ENetPeerState m_state; diff --git a/src/Nazara/Network/ENetHost.cpp b/src/Nazara/Network/ENetHost.cpp index c4223653c..6f6c740ad 100644 --- a/src/Nazara/Network/ENetHost.cpp +++ b/src/Nazara/Network/ENetHost.cpp @@ -770,8 +770,8 @@ namespace Nz void ENetHost::SendAcknowledgements(ENetPeer* peer) { - auto currentAcknowledgement = peer->m_acknowledgements.begin(); - while (currentAcknowledgement != peer->m_acknowledgements.end()) + auto it = peer->m_acknowledgements.begin(); + for (; it != peer->m_acknowledgements.end(); ++it) { if (m_commandCount >= m_commands.size() || m_bufferCount >= m_buffers.size() || peer->GetMtu() - m_packetSize < sizeof(ENetProtocolAcknowledge)) { @@ -779,7 +779,7 @@ namespace Nz break; } - ENetPeer::Acknowledgement& acknowledgement = *currentAcknowledgement; + ENetPeer::Acknowledgement& acknowledgement = *it; ENetProtocol& command = m_commands[m_commandCount]; NetBuffer& buffer = m_buffers[m_bufferCount]; @@ -800,11 +800,11 @@ namespace Nz if ((acknowledgement.command.header.command & ENetProtocolCommand_Mask) == ENetProtocolCommand_Disconnect) peer->DispatchState(ENetPeerState::Zombie); - currentAcknowledgement = peer->m_acknowledgements.erase(currentAcknowledgement); - ++m_bufferCount; ++m_commandCount; } + + peer->m_acknowledgements.erase(peer->m_acknowledgements.begin(), it); } bool ENetHost::SendReliableOutgoingCommands(ENetPeer* peer)