Network/ENetHost: Optimize acknowledgements handling
This commit is contained in:
parent
890b06bfcb
commit
8225ad3b41
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue