Network/ENetHost: Optimize acknowledgements handling

This commit is contained in:
Lynix 2017-02-15 08:27:15 +01:00
parent 890b06bfcb
commit 8225ad3b41
2 changed files with 6 additions and 6 deletions

View File

@ -178,13 +178,13 @@ namespace Nz
ENetHost* m_host;
IpAddress m_address; /**< Internet address of the peer */
std::array<UInt32, unsequencedWindow> m_unsequencedWindow;
std::list<Acknowledgement> m_acknowledgements;
std::list<IncomingCommmand> m_dispatchedCommands;
std::list<OutgoingCommand> m_outgoingReliableCommands;
std::list<OutgoingCommand> m_outgoingUnreliableCommands;
std::list<OutgoingCommand> m_sentReliableCommands;
std::list<OutgoingCommand> m_sentUnreliableCommands;
std::size_t m_totalWaitingData;
std::vector<Acknowledgement> m_acknowledgements;
std::vector<Channel> m_channels;
MemoryPool m_packetPool;
ENetPeerState m_state;

View File

@ -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)