From e78329b9b1892959bbe421300e3c1971cb963bab Mon Sep 17 00:00:00 2001 From: AeonLucid Date: Fri, 23 Oct 2020 00:28:29 +0200 Subject: [PATCH] Proper logging in game class --- src/Impostor.Server/Net/Client.cs | 2 +- src/Impostor.Server/Net/State/Game.Data.cs | 41 ++++++++++++++----- .../Net/State/Game.Incoming.cs | 7 ++-- src/Impostor.Server/Net/State/Game.State.cs | 5 ++- src/Impostor.Server/Net/State/Game.cs | 6 ++- src/Impostor.Tools.ServerReplay/Program.cs | 2 +- 6 files changed, 43 insertions(+), 20 deletions(-) diff --git a/src/Impostor.Server/Net/Client.cs b/src/Impostor.Server/Net/Client.cs index 361906b..e1e3512 100644 --- a/src/Impostor.Server/Net/Client.cs +++ b/src/Impostor.Server/Net/Client.cs @@ -149,7 +149,7 @@ namespace Impostor.Server.Net var readerCopy = reader.Slice(reader.Position); // TODO: Return value, either a bool (to cancel) or a writer (to cancel (null) or modify/overwrite). - // await Player.Game.HandleGameData(readerCopy, Player, toPlayer); + await Player.Game.HandleGameDataAsync(readerCopy, Player, toPlayer); // Broadcast packet to all other players. using (var writer = MessageWriter.Get(messageType)) diff --git a/src/Impostor.Server/Net/State/Game.Data.cs b/src/Impostor.Server/Net/State/Game.Data.cs index aff5ce6..66a331c 100644 --- a/src/Impostor.Server/Net/State/Game.Data.cs +++ b/src/Impostor.Server/Net/State/Game.Data.cs @@ -1,11 +1,13 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Impostor.Api.Innersloth.GameData; using Impostor.Api.Net.Messages; using Impostor.Server.GameData; using Impostor.Server.GameData.Objects; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; namespace Impostor.Server.Net.State { @@ -26,7 +28,19 @@ namespace Impostor.Server.Net.State private readonly List _allObjects = new List(); private readonly Dictionary _allObjectsFast = new Dictionary(); - public async ValueTask HandleGameData(IMessageReader parent, ClientPlayer sender, bool toPlayer) + private int _gamedataInitialized; + + public void InitGameData() + { + if (Interlocked.Exchange(ref _gamedataInitialized, 1) != 0) + { + return; + } + + + } + + public async ValueTask HandleGameDataAsync(IMessageReader parent, ClientPlayer sender, bool toPlayer) { // Find target player. ClientPlayer target = null; @@ -50,10 +64,15 @@ namespace Impostor.Server.Net.State { case GameDataTag.DataFlag: { - if (_allObjectsFast.TryGetValue(reader.ReadPackedUInt32(), out var obj)) + var netId = reader.ReadPackedUInt32(); + if (_allObjectsFast.TryGetValue(netId, out var obj)) { obj.Deserialize(reader, false); } + else + { + _logger.LogWarning("Received DataFlag for unregistered NetId {0}.", netId); + } break; } @@ -83,7 +102,7 @@ namespace Impostor.Server.Net.State if (componentsCount != components.Count) { - Logger.Error( + _logger.LogError( "Children didn't match for spawnable {0}, name {1} ({2} != {3})", objectId, innerNetObject.GetType().Name, @@ -101,7 +120,7 @@ namespace Impostor.Server.Net.State if (!AddNetObject(obj)) { - Logger.Verbose("Failed to AddNetObject."); + _logger.LogTrace("Failed to AddNetObject."); obj.NetId = uint.MaxValue; break; @@ -118,25 +137,25 @@ namespace Impostor.Server.Net.State { if (TryGetPlayer(id, out var clientById)) { - Logger.Verbose("Spawn character"); + _logger.LogTrace("Spawn character"); } else { - Logger.Verbose("Spawn unowned character"); + _logger.LogTrace("Spawn unowned character"); } } continue; } - Logger.Error("Couldn't find spawnable object {0}.", objectId); + _logger.LogError("Couldn't find spawnable object {0}.", objectId); break; } case GameDataTag.DespawnFlag: { var objectNetId = reader.ReadPackedUInt32(); - Logger.Verbose("> Destroy {0}", objectNetId); + _logger.LogTrace("> Destroy {0}", objectNetId); break; } @@ -144,20 +163,20 @@ namespace Impostor.Server.Net.State { var clientId = reader.ReadPackedInt32(); var targetScene = reader.ReadString(); - Logger.Verbose("> Scene {0} to {1}", clientId, targetScene); + _logger.LogTrace("> Scene {0} to {1}", clientId, targetScene); break; } case GameDataTag.ReadyFlag: { var clientId = reader.ReadPackedInt32(); - Logger.Verbose("> IsReady {0}", clientId); + _logger.LogTrace("> IsReady {0}", clientId); break; } default: { - Logger.Debug("Bad GameData tag {0}", reader.Tag); + _logger.LogTrace("Bad GameData tag {0}", reader.Tag); break; } } diff --git a/src/Impostor.Server/Net/State/Game.Incoming.cs b/src/Impostor.Server/Net/State/Game.Incoming.cs index 2613098..0f2b9fc 100644 --- a/src/Impostor.Server/Net/State/Game.Incoming.cs +++ b/src/Impostor.Server/Net/State/Game.Incoming.cs @@ -4,6 +4,7 @@ using Impostor.Api.Innersloth.Data; using Impostor.Api.Net; using Impostor.Api.Net.Messages; using Impostor.Hazel; +using Microsoft.Extensions.Logging; namespace Impostor.Server.Net.State { @@ -122,7 +123,7 @@ namespace Impostor.Server.Net.State public async ValueTask HandleKickPlayer(int playerId, bool isBan) { - Logger.Information("{0} - Player {1} has left.", Code, playerId); + _logger.LogInformation("{0} - Player {1} has left.", Code, playerId); using var message = MessageWriter.Get(MessageType.Reliable); @@ -144,7 +145,7 @@ namespace Impostor.Server.Net.State private async ValueTask HandleJoinGameNew(ClientPlayer sender, bool isNew) { - Logger.Information("{0} - Player {1} ({2}) is joining.", Code, sender.Client.Name, sender.Client.Id); + _logger.LogInformation("{0} - Player {1} ({2}) is joining.", Code, sender.Client.Name, sender.Client.Id); // Add player to the game. if (isNew) @@ -166,7 +167,7 @@ namespace Impostor.Server.Net.State private async ValueTask HandleJoinGameNext(ClientPlayer sender, bool isNew) { - Logger.Information("{0} - Player {1} ({2}) is rejoining.", Code, sender.Client.Name, sender.Client.Id); + _logger.LogInformation("{0} - Player {1} ({2}) is rejoining.", Code, sender.Client.Name, sender.Client.Id); // Add player to the game. if (isNew) diff --git a/src/Impostor.Server/Net/State/Game.State.cs b/src/Impostor.Server/Net/State/Game.State.cs index ee3184e..b5fcffb 100644 --- a/src/Impostor.Server/Net/State/Game.State.cs +++ b/src/Impostor.Server/Net/State/Game.State.cs @@ -6,6 +6,7 @@ using Impostor.Api.Innersloth.Data; using Impostor.Api.Net; using Impostor.Api.Net.Messages; using Impostor.Hazel; +using Microsoft.Extensions.Logging; namespace Impostor.Server.Net.State { @@ -35,7 +36,7 @@ namespace Impostor.Server.Net.State return false; } - Logger.Information("{0} - Player {1} ({2}) has left.", Code, player.Client.Name, playerId); + _logger.LogInformation("{0} - Player {1} ({2}) has left.", Code, player.Client.Name, playerId); player.Client.Player = null; @@ -79,7 +80,7 @@ namespace Impostor.Server.Net.State } HostId = host.Client.Id; - Logger.Information("{0} - Assigned {1} ({2}) as new host.", Code, host.Client.Name, host.Client.Id); + _logger.LogInformation("{0} - Assigned {1} ({2}) as new host.", Code, host.Client.Name, host.Client.Id); // Check our current game state. if (GameState == GameStates.Ended && host.Limbo == LimboStates.WaitingForHost) diff --git a/src/Impostor.Server/Net/State/Game.cs b/src/Impostor.Server/Net/State/Game.cs index 2110c04..c3283df 100644 --- a/src/Impostor.Server/Net/State/Game.cs +++ b/src/Impostor.Server/Net/State/Game.cs @@ -15,6 +15,7 @@ using Impostor.Hazel; using Impostor.Server.Net.Hazel; using Impostor.Server.Net.Manager; using Impostor.Server.Net.Redirector; +using Microsoft.Extensions.Logging; using Serilog; using ILogger = Serilog.ILogger; @@ -22,8 +23,7 @@ namespace Impostor.Server.Net.State { internal partial class Game : IGame { - private static readonly ILogger Logger = Log.ForContext(); - + private readonly ILogger _logger; private readonly IServiceProvider _serviceProvider; private readonly GameManager _gameManager; private readonly ClientManager _clientManager; @@ -32,6 +32,7 @@ namespace Impostor.Server.Net.State private readonly IEventManager _eventManager; public Game( + ILogger logger, IServiceProvider serviceProvider, GameManager gameManager, IPEndPoint publicIp, @@ -40,6 +41,7 @@ namespace Impostor.Server.Net.State ClientManager clientManager, IEventManager eventManager) { + _logger = logger; _serviceProvider = serviceProvider; _gameManager = gameManager; _players = new ConcurrentDictionary(); diff --git a/src/Impostor.Tools.ServerReplay/Program.cs b/src/Impostor.Tools.ServerReplay/Program.cs index 7cc20fb..ebae6bf 100644 --- a/src/Impostor.Tools.ServerReplay/Program.cs +++ b/src/Impostor.Tools.ServerReplay/Program.cs @@ -43,7 +43,7 @@ namespace Impostor.Tools.ServerReplay private static async Task Main(string[] args) { Log.Logger = new LoggerConfiguration() - .MinimumLevel.Information() + .MinimumLevel.Verbose() .WriteTo.Console() .CreateLogger(); -- 2.39.5