Skip to content

Commit

Permalink
simplify remove peer (1 method instead of 2)
Browse files Browse the repository at this point in the history
  • Loading branch information
RevenantX committed Aug 2, 2024
1 parent 9fb2546 commit ebe4261
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 19 deletions.
23 changes: 10 additions & 13 deletions LiteNetLib/NetManager.HashSet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -150,22 +150,16 @@ private void AddPeer(NetPeer peer)
_peersLock.ExitWriteLock();
}

private void RemovePeer(NetPeer peer)
private void RemovePeer(NetPeer peer, bool enableWriteLock)
{
_peersLock.EnterWriteLock();
RemovePeerInternal(peer);
_peersLock.ExitWriteLock();
}

private void RemovePeerInternal(NetPeer peer)
{
if (peer == null)
if(enableWriteLock)
_peersLock.EnterWriteLock();
if (!RemovePeerFromSet(peer))
{
NetDebug.WriteError($"Remove peer null: {peer}");
if(enableWriteLock)
_peersLock.ExitWriteLock();
return;
}
if (!RemovePeerFromSet(peer))
return;
if (peer == _headPeer)
_headPeer = peer.NextPeer;

Expand All @@ -177,11 +171,14 @@ private void RemovePeerInternal(NetPeer peer)

_peersArray[peer.Id] = null;
_peerIds.Enqueue(peer.Id);

if(enableWriteLock)
_peersLock.ExitWriteLock();
}

private bool RemovePeerFromSet(NetPeer peer)
{
if (_buckets == null)
if (_buckets == null || peer == null)
return false;
int hashCode = peer.GetHashCode() & Lower31BitMask;
int bucket = hashCode % _buckets.Length;
Expand Down
12 changes: 6 additions & 6 deletions LiteNetLib/NetManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -580,7 +580,7 @@ private void UpdateLogic()
{
_peersLock.EnterWriteLock();
for (int i = 0; i < peersToRemove.Count; i++)
RemovePeerInternal(peersToRemove[i]);
RemovePeer(peersToRemove[i], false);
_peersLock.ExitWriteLock();
peersToRemove.Clear();
}
Expand Down Expand Up @@ -661,7 +661,7 @@ public void ManualUpdate(float elapsedMilliseconds)
{
if (netPeer.ConnectionState == ConnectionState.Disconnected && netPeer.TimeSinceLastPacket > DisconnectTimeout)
{
RemovePeerInternal(netPeer);
RemovePeer(netPeer, false);
}
else
{
Expand Down Expand Up @@ -738,16 +738,16 @@ private void ProcessConnectRequest(
{
case ConnectRequestResult.Reconnection:
DisconnectPeerForce(netPeer, DisconnectReason.Reconnect, 0, null);
RemovePeer(netPeer);
RemovePeer(netPeer, true);
//go to new connection
break;
case ConnectRequestResult.NewConnection:
RemovePeer(netPeer);
RemovePeer(netPeer, true);
//go to new connection
break;
case ConnectRequestResult.P2PLose:
DisconnectPeerForce(netPeer, DisconnectReason.PeerToPeerConnection, 0, null);
RemovePeer(netPeer);
RemovePeer(netPeer, true);
//go to new connection
break;
default:
Expand Down Expand Up @@ -1564,7 +1564,7 @@ public NetPeer Connect(IPEndPoint target, NetDataWriter connectionData)
}
//else reconnect
connectionNumber = (byte)((peer.ConnectionNum + 1) % NetConstants.MaxConnectionNumber);
RemovePeer(peer);
RemovePeer(peer, true);
}

//Create reliable connection
Expand Down

0 comments on commit ebe4261

Please sign in to comment.