Skip to content

Commit c91360e

Browse files
authored
Fixed: Process Delayed Packets in Manual Mode (#416)
1 parent 4ea32cf commit c91360e

File tree

1 file changed

+31
-22
lines changed

1 file changed

+31
-22
lines changed

LiteNetLib/NetManager.cs

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -672,26 +672,7 @@ private void UpdateLogic()
672672

673673
while (_socket.IsRunning)
674674
{
675-
#if DEBUG
676-
if (SimulateLatency)
677-
{
678-
var time = DateTime.UtcNow;
679-
lock (_pingSimulationList)
680-
{
681-
for (int i = 0; i < _pingSimulationList.Count; i++)
682-
{
683-
var incomingData = _pingSimulationList[i];
684-
if (incomingData.TimeWhenGet <= time)
685-
{
686-
DataReceived(incomingData.Data, incomingData.Data.Length, incomingData.EndPoint);
687-
_pingSimulationList.RemoveAt(i);
688-
i--;
689-
}
690-
}
691-
}
692-
}
693-
#endif
694-
675+
ProcessDelayedPackets();
695676
int elapsed = (int)stopwatch.ElapsedMilliseconds;
696677
elapsed = elapsed <= 0 ? 1 : elapsed;
697678
stopwatch.Reset();
@@ -725,6 +706,30 @@ private void UpdateLogic()
725706
stopwatch.Stop();
726707
}
727708

709+
[Conditional("DEBUG")]
710+
private void ProcessDelayedPackets()
711+
{
712+
#if DEBUG
713+
if (SimulateLatency)
714+
{
715+
var time = DateTime.UtcNow;
716+
lock (_pingSimulationList)
717+
{
718+
for (int i = 0; i < _pingSimulationList.Count; i++)
719+
{
720+
var incomingData = _pingSimulationList[i];
721+
if (incomingData.TimeWhenGet <= time)
722+
{
723+
DataReceived(incomingData.Data, incomingData.Data.Length, incomingData.EndPoint);
724+
_pingSimulationList.RemoveAt(i);
725+
i--;
726+
}
727+
}
728+
}
729+
}
730+
#endif
731+
}
732+
728733
private void ProcessNtpRequests(int elapsedMilliseconds)
729734
{
730735
List<IPEndPoint> requestsToRemove = null;
@@ -756,6 +761,7 @@ public void ManualUpdate(int elapsedMilliseconds)
756761
{
757762
if (!_manualMode)
758763
return;
764+
759765
for (var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer)
760766
{
761767
if (netPeer.ConnectionState == ConnectionState.Disconnected && netPeer.TimeSinceLastPacket > DisconnectTimeout)
@@ -776,8 +782,11 @@ public void ManualUpdate(int elapsedMilliseconds)
776782
/// </summary>
777783
public void ManualReceive()
778784
{
779-
if(_manualMode)
780-
_socket.ManualReceive();
785+
if(!_manualMode)
786+
return;
787+
788+
_socket.ManualReceive();
789+
ProcessDelayedPackets();
781790
}
782791

783792
internal void OnMessageReceived(byte[] data, int length, SocketError errorCode, IPEndPoint remoteEndPoint)

0 commit comments

Comments
 (0)