Skip to content

Commit 0f7dcf1

Browse files
committed
feat: add shorter path functions to send message / disconnect
1 parent 439c466 commit 0f7dcf1

3 files changed

Lines changed: 46 additions & 18 deletions

File tree

SimpleNetworkManager.NET/Network/BaseNetworkClient.cs

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Cysharp.Threading.Tasks;
2+
using Insthync.SimpleNetworkManager.NET.Messages;
23
using Insthync.SimpleNetworkManager.NET.Services;
34
using Microsoft.Extensions.Logging;
45
using System;
@@ -10,17 +11,36 @@ public abstract class BaseNetworkClient
1011
{
1112
protected readonly ILoggerFactory _loggerFactory;
1213
protected readonly ILogger<BaseNetworkClient> _logger;
13-
protected readonly MessageRouter _messageRouter;
14+
protected readonly MessageRouterService _messageRouter;
1415

15-
public MessageRouter MessageRouter => _messageRouter;
16+
public MessageRouterService MessageRouter => _messageRouter;
1617
public abstract BaseClientConnection? ClientConnection { get; }
1718
public bool IsConnected => ClientConnection?.IsConnected ?? false;
1819

1920
public BaseNetworkClient(ILoggerFactory loggerFactory)
2021
{
2122
_loggerFactory = loggerFactory;
2223
_logger = _loggerFactory.CreateLogger<BaseNetworkClient>();
23-
_messageRouter = new MessageRouter(_loggerFactory.CreateLogger<MessageRouter>());
24+
_messageRouter = new MessageRouterService(_loggerFactory.CreateLogger<MessageRouterService>());
25+
}
26+
27+
public async UniTask SendMessageAsync<T>(T message)
28+
where T : BaseMessage
29+
{
30+
if (ClientConnection == null)
31+
return;
32+
await ClientConnection.SendMessageAsync(message);
33+
}
34+
35+
public async UniTask DisconnectAsync()
36+
{
37+
if (ClientConnection == null || !ClientConnection.IsConnected)
38+
{
39+
_logger.LogWarning("Client is not connecting");
40+
return;
41+
}
42+
await ClientConnection.DisconnectAsync();
43+
ClientConnection?.Dispose();
2444
}
2545

2646
protected virtual void SetupConnection()
@@ -73,6 +93,5 @@ protected virtual async void OnClientMessageReceived(BaseClientConnection client
7393
}
7494

7595
public abstract UniTask ConnectAsync(string hostname, int port, CancellationToken cancellationToken);
76-
public abstract UniTask DisconnectAsync();
7796
}
7897
}

SimpleNetworkManager.NET/Network/BaseNetworkServer.cs

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Cysharp.Threading.Tasks;
2+
using Insthync.SimpleNetworkManager.NET.Messages;
23
using Insthync.SimpleNetworkManager.NET.Services;
34
using Microsoft.Extensions.Logging;
45
using System;
@@ -11,11 +12,11 @@ public abstract class BaseNetworkServer
1112
protected readonly ILoggerFactory _loggerFactory;
1213
protected readonly ILogger<BaseNetworkServer> _logger;
1314
protected readonly ConnectionManager _connectionManager;
14-
protected readonly MessageRouter _messageRouter;
15+
protected readonly MessageRouterService _messageRouter;
1516
public int MaxConnections = 1;
1617

1718
public ConnectionManager ConnectionManager => _connectionManager;
18-
public MessageRouter MessageRouter => _messageRouter;
19+
public MessageRouterService MessageRouter => _messageRouter;
1920

2021
/// <summary>
2122
/// Indicates whether the server is currently running
@@ -27,7 +28,26 @@ public BaseNetworkServer(ILoggerFactory loggerFactory)
2728
_loggerFactory = loggerFactory;
2829
_logger = _loggerFactory.CreateLogger<BaseNetworkServer>();
2930
_connectionManager = new ConnectionManager(_loggerFactory.CreateLogger<ConnectionManager>());
30-
_messageRouter = new MessageRouter(_loggerFactory.CreateLogger<MessageRouter>());
31+
_messageRouter = new MessageRouterService(_loggerFactory.CreateLogger<MessageRouterService>());
32+
}
33+
34+
public async UniTask SendMessageAsync<T>(uint connectionId, T message)
35+
where T : BaseMessage
36+
{
37+
if (!_connectionManager.TryGetConnection(connectionId, out var clientConnection))
38+
return;
39+
if (clientConnection == null || !clientConnection.IsConnected)
40+
return;
41+
await clientConnection.SendMessageAsync(message);
42+
}
43+
44+
public async UniTask DisconnectAsync(uint connectionId)
45+
{
46+
if (!_connectionManager.TryGetConnection(connectionId, out var clientConnection))
47+
return;
48+
if (clientConnection == null || !clientConnection.IsConnected)
49+
return;
50+
await clientConnection.DisconnectAsync();
3151
}
3252

3353
protected virtual void AddConnection(BaseClientConnection clientConnection)

SimpleNetworkManager.NET/Network/TcpTransport/TcpNetworkClient.cs

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -77,17 +77,6 @@ public override async UniTask ConnectAsync(string hostname, int port, Cancellati
7777
}
7878
}
7979

80-
public override async UniTask DisconnectAsync()
81-
{
82-
if (_clientConnection == null || !_clientConnection.IsConnected)
83-
{
84-
_logger.LogWarning("Client is not connecting");
85-
return;
86-
}
87-
await _clientConnection.DisconnectAsync();
88-
_clientConnection?.Dispose();
89-
}
90-
9180
public void Dispose()
9281
{
9382
if (_disposed)

0 commit comments

Comments
 (0)