Network/ENetHost: Optimize acknowledgements handling
This commit is contained in:
parent
890b06bfcb
commit
8225ad3b41
|
|
@ -178,13 +178,13 @@ namespace Nz
|
||||||
ENetHost* m_host;
|
ENetHost* m_host;
|
||||||
IpAddress m_address; /**< Internet address of the peer */
|
IpAddress m_address; /**< Internet address of the peer */
|
||||||
std::array<UInt32, unsequencedWindow> m_unsequencedWindow;
|
std::array<UInt32, unsequencedWindow> m_unsequencedWindow;
|
||||||
std::list<Acknowledgement> m_acknowledgements;
|
|
||||||
std::list<IncomingCommmand> m_dispatchedCommands;
|
std::list<IncomingCommmand> m_dispatchedCommands;
|
||||||
std::list<OutgoingCommand> m_outgoingReliableCommands;
|
std::list<OutgoingCommand> m_outgoingReliableCommands;
|
||||||
std::list<OutgoingCommand> m_outgoingUnreliableCommands;
|
std::list<OutgoingCommand> m_outgoingUnreliableCommands;
|
||||||
std::list<OutgoingCommand> m_sentReliableCommands;
|
std::list<OutgoingCommand> m_sentReliableCommands;
|
||||||
std::list<OutgoingCommand> m_sentUnreliableCommands;
|
std::list<OutgoingCommand> m_sentUnreliableCommands;
|
||||||
std::size_t m_totalWaitingData;
|
std::size_t m_totalWaitingData;
|
||||||
|
std::vector<Acknowledgement> m_acknowledgements;
|
||||||
std::vector<Channel> m_channels;
|
std::vector<Channel> m_channels;
|
||||||
MemoryPool m_packetPool;
|
MemoryPool m_packetPool;
|
||||||
ENetPeerState m_state;
|
ENetPeerState m_state;
|
||||||
|
|
|
||||||
|
|
@ -770,8 +770,8 @@ namespace Nz
|
||||||
|
|
||||||
void ENetHost::SendAcknowledgements(ENetPeer* peer)
|
void ENetHost::SendAcknowledgements(ENetPeer* peer)
|
||||||
{
|
{
|
||||||
auto currentAcknowledgement = peer->m_acknowledgements.begin();
|
auto it = peer->m_acknowledgements.begin();
|
||||||
while (currentAcknowledgement != peer->m_acknowledgements.end())
|
for (; it != peer->m_acknowledgements.end(); ++it)
|
||||||
{
|
{
|
||||||
if (m_commandCount >= m_commands.size() || m_bufferCount >= m_buffers.size() || peer->GetMtu() - m_packetSize < sizeof(ENetProtocolAcknowledge))
|
if (m_commandCount >= m_commands.size() || m_bufferCount >= m_buffers.size() || peer->GetMtu() - m_packetSize < sizeof(ENetProtocolAcknowledge))
|
||||||
{
|
{
|
||||||
|
|
@ -779,7 +779,7 @@ namespace Nz
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ENetPeer::Acknowledgement& acknowledgement = *currentAcknowledgement;
|
ENetPeer::Acknowledgement& acknowledgement = *it;
|
||||||
|
|
||||||
ENetProtocol& command = m_commands[m_commandCount];
|
ENetProtocol& command = m_commands[m_commandCount];
|
||||||
NetBuffer& buffer = m_buffers[m_bufferCount];
|
NetBuffer& buffer = m_buffers[m_bufferCount];
|
||||||
|
|
@ -800,11 +800,11 @@ namespace Nz
|
||||||
if ((acknowledgement.command.header.command & ENetProtocolCommand_Mask) == ENetProtocolCommand_Disconnect)
|
if ((acknowledgement.command.header.command & ENetProtocolCommand_Mask) == ENetProtocolCommand_Disconnect)
|
||||||
peer->DispatchState(ENetPeerState::Zombie);
|
peer->DispatchState(ENetPeerState::Zombie);
|
||||||
|
|
||||||
currentAcknowledgement = peer->m_acknowledgements.erase(currentAcknowledgement);
|
|
||||||
|
|
||||||
++m_bufferCount;
|
++m_bufferCount;
|
||||||
++m_commandCount;
|
++m_commandCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
peer->m_acknowledgements.erase(peer->m_acknowledgements.begin(), it);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ENetHost::SendReliableOutgoingCommands(ENetPeer* peer)
|
bool ENetHost::SendReliableOutgoingCommands(ENetPeer* peer)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue