Network/ENet: Add DisconnectTimeout event
This commit is contained in:
@@ -386,7 +386,7 @@ namespace Nz
|
||||
case ENetPeerState::Zombie:
|
||||
m_recalculateBandwidthLimits = true;
|
||||
|
||||
event->type = ENetEventType::Disconnect;
|
||||
event->type = (peer.m_timedOut) ? ENetEventType::DisconnectTimeout : ENetEventType::Disconnect;
|
||||
event->peer = &peer;
|
||||
event->data = peer.m_eventData;
|
||||
|
||||
@@ -787,7 +787,7 @@ namespace Nz
|
||||
peer->DispatchState((peer->GetState() == ENetPeerState::Connecting) ? ENetPeerState::ConnectionSucceeded : ENetPeerState::ConnectionPending);
|
||||
}
|
||||
|
||||
void ENetHost::NotifyDisconnect(ENetPeer* peer, ENetEvent* event)
|
||||
void ENetHost::NotifyDisconnect(ENetPeer* peer, ENetEvent* event, bool timeout)
|
||||
{
|
||||
if (peer->GetState() >= ENetPeerState::ConnectionPending)
|
||||
m_recalculateBandwidthLimits = true;
|
||||
@@ -796,7 +796,7 @@ namespace Nz
|
||||
peer->Reset();
|
||||
else if (event)
|
||||
{
|
||||
event->type = ENetEventType::Disconnect;
|
||||
event->type = (timeout) ? ENetEventType::DisconnectTimeout : ENetEventType::Disconnect;
|
||||
event->peer = peer;
|
||||
event->data = peer->m_eventData;
|
||||
|
||||
@@ -805,6 +805,7 @@ namespace Nz
|
||||
else
|
||||
{
|
||||
peer->m_eventData = 0;
|
||||
peer->m_timedOut = timeout;
|
||||
|
||||
peer->DispatchState(ENetPeerState::Zombie);
|
||||
}
|
||||
@@ -1123,7 +1124,7 @@ namespace Nz
|
||||
if (!currentPeer->IsConnected())
|
||||
{
|
||||
//< Network is down or unreachable (ex: IPv6 address when not supported), fails peer connection immediately
|
||||
NotifyDisconnect(currentPeer, event);
|
||||
NotifyDisconnect(currentPeer, event, true);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -163,6 +163,7 @@ namespace Nz
|
||||
m_incomingUnsequencedGroup = 0;
|
||||
m_outgoingUnsequencedGroup = 0;
|
||||
m_eventData = 0;
|
||||
m_timedOut = false;
|
||||
m_totalByteReceived = 0;
|
||||
m_totalByteSent = 0;
|
||||
m_totalPacketReceived = 0;
|
||||
@@ -308,7 +309,7 @@ namespace Nz
|
||||
if (m_earliestTimeout != 0 && (ENetTimeDifference(serviceTime, m_earliestTimeout) >= m_timeoutMaximum ||
|
||||
(command.roundTripTimeout >= command.roundTripTimeoutLimit && ENetTimeDifference(serviceTime, m_earliestTimeout) >= m_timeoutMinimum)))
|
||||
{
|
||||
m_host->NotifyDisconnect(this, event);
|
||||
m_host->NotifyDisconnect(this, event, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -510,7 +511,7 @@ namespace Nz
|
||||
if (commandNumber != ENetProtocolCommand_Disconnect)
|
||||
return false;
|
||||
|
||||
m_host->NotifyDisconnect(this, event);
|
||||
m_host->NotifyDisconnect(this, event, false);
|
||||
break;
|
||||
|
||||
case ENetPeerState::DisconnectLater:
|
||||
|
||||
Reference in New Issue
Block a user