From 08f52e9b72a09eed7db46fa9a97b7fee862b19fc Mon Sep 17 00:00:00 2001 From: Syntriax Date: Sun, 6 Jul 2025 17:22:50 +0300 Subject: [PATCH] refactor: client & server connections separated for id tracking --- Shared/Network/LiteNetLib/LiteNetLibClient.cs | 2 ++ ...ibConnection.cs => LiteNetLibClientConnection.cs} | 4 ++-- .../Network/LiteNetLib/LiteNetLibCommunicatorBase.cs | 4 +++- Shared/Network/LiteNetLib/LiteNetLibServer.cs | 2 ++ .../Network/LiteNetLib/LiteNetLibServerConnection.cs | 12 ++++++++++++ 5 files changed, 21 insertions(+), 3 deletions(-) rename Shared/Network/LiteNetLib/{LiteNetLibConnection.cs => LiteNetLibClientConnection.cs} (61%) create mode 100644 Shared/Network/LiteNetLib/LiteNetLibServerConnection.cs diff --git a/Shared/Network/LiteNetLib/LiteNetLibClient.cs b/Shared/Network/LiteNetLib/LiteNetLibClient.cs index 5432ab8..8bc1c52 100644 --- a/Shared/Network/LiteNetLib/LiteNetLibClient.cs +++ b/Shared/Network/LiteNetLib/LiteNetLibClient.cs @@ -15,6 +15,8 @@ public class LiteNetLibClient : LiteNetLibCommunicatorBase, INetworkCommunicator private CancellationTokenSource? cancellationTokenSource = null; + protected override IConnection GetConnection(NetPeer peer) => new LiteNetLibServerConnection(peer); + public INetworkCommunicatorClient Connect(string address, int port, string? password = null) { if (!UniverseObject.IsInUniverse) diff --git a/Shared/Network/LiteNetLib/LiteNetLibConnection.cs b/Shared/Network/LiteNetLib/LiteNetLibClientConnection.cs similarity index 61% rename from Shared/Network/LiteNetLib/LiteNetLibConnection.cs rename to Shared/Network/LiteNetLib/LiteNetLibClientConnection.cs index 55e866e..b1e4763 100644 --- a/Shared/Network/LiteNetLib/LiteNetLibConnection.cs +++ b/Shared/Network/LiteNetLib/LiteNetLibClientConnection.cs @@ -2,11 +2,11 @@ using LiteNetLib; namespace Syntriax.Engine.Network; -public record class LiteNetLibConnection(NetPeer NetPeer) : IConnection +public record class LiteNetLibClientConnection(NetPeer NetPeer) : IConnection { public string Id { get; } = NetPeer.Id.ToString(); public float Ping => NetPeer.Ping * .001f; public float RoundTrip => NetPeer.RoundTripTime * .001f; - public override string ToString() => $"Client({Id})"; + public override string ToString() => $"Connection({Id})"; } diff --git a/Shared/Network/LiteNetLib/LiteNetLibCommunicatorBase.cs b/Shared/Network/LiteNetLib/LiteNetLibCommunicatorBase.cs index b2d1925..88d1f30 100644 --- a/Shared/Network/LiteNetLib/LiteNetLibCommunicatorBase.cs +++ b/Shared/Network/LiteNetLib/LiteNetLibCommunicatorBase.cs @@ -60,14 +60,16 @@ public abstract class LiteNetLibCommunicatorBase : Behaviour, INetworkCommunicat catch (Exception exception) { logger?.LogException(this, exception, force: true); } } + protected abstract IConnection GetConnection(NetPeer peer); private void ConnectionEstablished(NetPeer peer) { - LiteNetLibConnection connection = new(peer); + IConnection connection = GetConnection(peer); _connections.Add(connection.Id, connection); logger?.Log(this, $"Connection established with ip '{peer.Address}' and id '{connection.Id}'"); OnConnectionEstablished.Invoke(this, connection); } + private void ConnectionAbolished(NetPeer peer, DisconnectInfo disconnectInfo) { if (!_connections.TryGetValue(peer.Id.ToString(), out var connection)) diff --git a/Shared/Network/LiteNetLib/LiteNetLibServer.cs b/Shared/Network/LiteNetLib/LiteNetLibServer.cs index db80cc3..9fdadb8 100644 --- a/Shared/Network/LiteNetLib/LiteNetLibServer.cs +++ b/Shared/Network/LiteNetLib/LiteNetLibServer.cs @@ -25,6 +25,8 @@ public class LiteNetLibServer : LiteNetLibCommunicatorBase, INetworkCommunicator Listener.ConnectionRequestEvent += OnConnectionRequest; } + protected override IConnection GetConnection(NetPeer peer) => new LiteNetLibClientConnection(peer); + private void OnConnectionRequest(ConnectionRequest request) { logger?.Log(this, $"Connection request from ip {request.RemoteEndPoint}"); diff --git a/Shared/Network/LiteNetLib/LiteNetLibServerConnection.cs b/Shared/Network/LiteNetLib/LiteNetLibServerConnection.cs new file mode 100644 index 0000000..7596a85 --- /dev/null +++ b/Shared/Network/LiteNetLib/LiteNetLibServerConnection.cs @@ -0,0 +1,12 @@ +using LiteNetLib; + +namespace Syntriax.Engine.Network; + +public record class LiteNetLibServerConnection(NetPeer NetPeer) : IConnection +{ + public string Id { get; } = NetPeer.RemoteId.ToString(); + public float Ping => NetPeer.Ping * .001f; + public float RoundTrip => NetPeer.RoundTripTime * .001f; + + public override string ToString() => $"Connection({Id})"; +}