]> git.deb.at Git - rhonda/impostor.git/commitdiff
Pass on exceptions to Hazel
authorAeonLucid <aeonlucid@gmail.com>
Sun, 18 Oct 2020 02:53:14 +0000 (04:53 +0200)
committerAeonLucid <aeonlucid@gmail.com>
Sun, 18 Oct 2020 02:53:14 +0000 (04:53 +0200)
src/Impostor.Server.Api/Net/IClient.cs
src/Impostor.Server.Hazel/HazelConnection.cs
src/Impostor.Server.Hazel/HazelMatchmaker.cs
src/Impostor.Server/Net/Client.cs
src/Impostor.Server/Net/ClientBase.cs
src/Impostor.Server/Net/Manager/ClientManager.cs
src/Impostor.Server/Net/Redirector/ClientRedirector.cs
submodules/Hazel-Networking

index 064f51ac206a74d763f5a39e3be09bc42c679534..0283a7578d3a91df0a3914766c77aa28b7e7beea 100644 (file)
@@ -61,6 +61,6 @@ namespace Impostor.Server.Net
 
         ValueTask HandleMessageAsync(IMessage message);
 
-        ValueTask HandleDisconnectAsync();
+        ValueTask HandleDisconnectAsync(string reason);
     }
 }
\ No newline at end of file
index 9d52c5b6ba694ee0affedb6dbef2d1424aa27764..b0f5d5e3138aa5747028e723af6af89e2eb2fe34 100644 (file)
@@ -33,37 +33,36 @@ namespace Impostor.Server.Hazel
         {
             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);
             }
         }
 
index e34f37ec40559cc214de0153ca4c406b1b2c0fe7..cc647a10bfd146ae43f7fd053a642d56eedcbe28 100644 (file)
@@ -51,21 +51,14 @@ namespace Impostor.Server.Hazel
 
         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)
index 42f9c913b144910808fc9c80f3af5d3d693c8e3f..e80951e185f4e65e7f546e62ea6633b0df2fd975 100644 (file)
@@ -9,6 +9,7 @@ using Impostor.Server.Net.Manager;
 using Impostor.Server.Net.Messages;
 using Impostor.Shared.Innersloth;
 using Impostor.Shared.Innersloth.Data;
+using Microsoft.Extensions.Logging;
 using Serilog;
 using ILogger = Serilog.ILogger;
 
@@ -16,14 +17,14 @@ namespace Impostor.Server.Net
 {
     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;
         }
@@ -34,7 +35,7 @@ namespace Impostor.Server.Net
 
             var flag = reader.Tag;
 
-            Logger.Verbose("[{0}] Server got {1}.", Id, flag);
+            _logger.LogTrace("[{0}] Server got {1}.", Id, flag);
 
             switch (flag)
             {
@@ -217,7 +218,7 @@ namespace Impostor.Server.Net
                 }
 
                 default:
-                    Logger.Warning("Server received unknown flag {0}.", flag);
+                    _logger.LogWarning("Server received unknown flag {0}.", flag);
                     break;
             }
 
@@ -227,7 +228,7 @@ namespace Impostor.Server.Net
                 flag != MessageFlags.EndGame &&
                 reader.Position < reader.Length)
             {
-                Logger.Warning(
+                _logger.LogWarning(
                     "Server did not consume all bytes from {0} ({1} < {2}).",
                     flag,
                     reader.Position,
@@ -236,7 +237,7 @@ namespace Impostor.Server.Net
 #endif
         }
 
-        public override async ValueTask HandleDisconnectAsync()
+        public override async ValueTask HandleDisconnectAsync(string reason)
         {
             try
             {
@@ -247,9 +248,10 @@ namespace Impostor.Server.Net
             }
             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);
         }
 
@@ -276,7 +278,7 @@ namespace Impostor.Server.Net
                     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;
             }
 
index 034ac7fec324e355736e432d2a00ec9793abf6df..825acc1adbbff0fddbd2f98e3bea2da5579c1755 100644 (file)
@@ -1,6 +1,7 @@
 using System.Collections.Concurrent;
 using System.Collections.Generic;
 using System.Threading.Tasks;
+using Hazel;
 using Impostor.Server.Net.Messages;
 
 namespace Impostor.Server.Net
@@ -28,6 +29,6 @@ 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
index bd2233d282199332e8fd282da1cc657006a9fe81..a178f7756dfa0d9cf612d85001311a78b4a07ba3 100644 (file)
@@ -75,13 +75,13 @@ namespace Impostor.Server.Net.Manager
             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 _);
         }
 
index ac5da50a6ca3c1c2b39e99d3e7b997a7fc00b9e1..13023634e72d269f163f72ba2ff6faf215ac57af 100644 (file)
@@ -86,7 +86,7 @@ namespace Impostor.Server.Net.Redirector
             }
         }
 
-        public override ValueTask HandleDisconnectAsync()
+        public override ValueTask HandleDisconnectAsync(string reason)
         {
             _clientManager.Remove(this);
             return default;
index de76089739cc3be4224193348104df028c785449..f00245df4523dbddd20e09ce52fd3c02cd8cda37 160000 (submodule)
@@ -1 +1 @@
-Subproject commit de76089739cc3be4224193348104df028c785449
+Subproject commit f00245df4523dbddd20e09ce52fd3c02cd8cda37