ValueTask HandleMessageAsync(IMessage message);
- ValueTask HandleDisconnectAsync();
+ ValueTask HandleDisconnectAsync(string reason);
}
}
\ No newline at end of file
{
if (Client != null)
{
- await Client.HandleDisconnectAsync();
+ await Client.HandleDisconnectAsync(e.Reason);
}
}
private async ValueTask ConnectionOnDataReceived(DataReceivedEventArgs e)
{
- try
+ if (Client == null)
{
- while (true)
+ _logger.LogWarning("Client was null.");
+ return;
+ }
+
+ while (true)
+ {
+ if (e.Message.Position >= e.Message.Length)
{
- if (e.Message.Position >= e.Message.Length)
- {
- break;
- }
+ break;
+ }
- var reader = e.Message.ReadMessage();
- var type = e.SendOption switch
- {
- SendOption.None => MessageType.Unreliable,
- SendOption.Reliable => MessageType.Reliable,
- _ => throw new NotSupportedException()
- };
+ var reader = e.Message.ReadMessage();
+ var type = e.SendOption switch
+ {
+ SendOption.None => MessageType.Unreliable,
+ SendOption.Reliable => MessageType.Reliable,
+ _ => throw new NotSupportedException()
+ };
- using var message = new HazelMessage(reader, type);
+ using var message = new HazelMessage(reader, type);
- await Client.HandleMessageAsync(message);
- }
- }
- catch (Exception ex)
- {
- _logger.LogError(ex, "Exception caught in client data handler.");
+ await Client.HandleMessageAsync(message);
}
}
private async ValueTask OnNewConnection(NewConnectionEventArgs e)
{
- try
- {
- // Handshake.
- var clientVersion = e.HandshakeData.ReadInt32();
- var name = e.HandshakeData.ReadString();
+ // Handshake.
+ var clientVersion = e.HandshakeData.ReadInt32();
+ var name = e.HandshakeData.ReadString();
- var connection = new HazelConnection(e.Connection, _connectionLogger);
+ var connection = new HazelConnection(e.Connection, _connectionLogger);
- // Register client
- await _clientManager.RegisterConnectionAsync(connection, name, clientVersion);
- }
- catch (Exception ex)
- {
- _logger.LogTrace(ex, "Error in new connection.");
- }
+ // Register client
+ await _clientManager.RegisterConnectionAsync(connection, name, clientVersion);
}
public IGameMessageWriter CreateGameMessageWriter(IGame game, MessageType messageType)
using Impostor.Server.Net.Messages;
using Impostor.Shared.Innersloth;
using Impostor.Shared.Innersloth.Data;
+using Microsoft.Extensions.Logging;
using Serilog;
using ILogger = Serilog.ILogger;
{
internal class Client : ClientBase
{
- private static readonly ILogger Logger = Log.ForContext<Client>();
-
+ private readonly ILogger<Client> _logger;
private readonly IClientManager _clientManager;
private readonly IGameManager _gameManager;
- public Client(IClientManager clientManager, IGameManager gameManager, string name, IConnection connection)
+ public Client(ILogger<Client> logger, IClientManager clientManager, IGameManager gameManager, string name, IConnection connection)
: base(name, connection)
{
+ _logger = logger;
_clientManager = clientManager;
_gameManager = gameManager;
}
var flag = reader.Tag;
- Logger.Verbose("[{0}] Server got {1}.", Id, flag);
+ _logger.LogTrace("[{0}] Server got {1}.", Id, flag);
switch (flag)
{
}
default:
- Logger.Warning("Server received unknown flag {0}.", flag);
+ _logger.LogWarning("Server received unknown flag {0}.", flag);
break;
}
flag != MessageFlags.EndGame &&
reader.Position < reader.Length)
{
- Logger.Warning(
+ _logger.LogWarning(
"Server did not consume all bytes from {0} ({1} < {2}).",
flag,
reader.Position,
#endif
}
- public override async ValueTask HandleDisconnectAsync()
+ public override async ValueTask HandleDisconnectAsync(string reason)
{
try
{
}
catch (Exception ex)
{
- Logger.Error(ex, "Exception caught in client disconnection.");
+ _logger.LogError(ex, "Exception caught in client disconnection.");
}
+ _logger.LogInformation("Client disconnecting, reason: {0}.", reason);
_clientManager.Remove(this);
}
return true;
}
- Logger.Warning("[{0}] Client sent packet only allowed by the host ({1}).", Id, game.HostId);
+ _logger.LogWarning("[{0}] Client sent packet only allowed by the host ({1}).", Id, game.HostId);
return false;
}
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Threading.Tasks;
+using Hazel;
using Impostor.Server.Net.Messages;
namespace Impostor.Server.Net
public abstract ValueTask HandleMessageAsync(IMessage message);
- public abstract ValueTask HandleDisconnectAsync();
+ public abstract ValueTask HandleDisconnectAsync(string reason);
}
}
\ No newline at end of file
var id = NextId();
client.Id = id;
- _logger.LogInformation("Client connected.");
+ _logger.LogTrace("Client connected.");
_clients.TryAdd(id, client);
}
public void Remove(IClient client)
{
- _logger.LogInformation("Client disconnected.");
+ _logger.LogTrace("Client disconnected.");
_clients.TryRemove(client.Id, out _);
}
}
}
- public override ValueTask HandleDisconnectAsync()
+ public override ValueTask HandleDisconnectAsync(string reason)
{
_clientManager.Remove(this);
return default;
-Subproject commit de76089739cc3be4224193348104df028c785449
+Subproject commit f00245df4523dbddd20e09ce52fd3c02cd8cda37