From e79a2839b9c316659d9a7b607bd33d8e0beccee8 Mon Sep 17 00:00:00 2001 From: Rutherther Date: Sun, 5 Feb 2023 20:01:39 +0100 Subject: [PATCH] feat: update to new split raw and managed client --- .../NosSmooth.Comms.Abstractions.csproj | 8 +++--- .../ClientNostaleClient.cs | 18 ------------- .../NosSmooth.Comms.Core.csproj | 4 +-- src/Local/NosSmooth.Comms.Inject/DllMain.cs | 2 +- .../MessageResponders/PacketResponder.cs | 4 +-- .../NosSmooth.Comms.Inject.csproj | 6 ++--- .../Extensions/ServiceCollectionExtensions.cs | 4 +++ .../MessageResponders/PacketResponder.cs | 5 ++-- .../MessageResponders/RawPacketResponder.cs | 26 ++----------------- .../NosSmooth.Comms.Local.csproj | 2 +- .../EveryPacketResponder.cs | 5 ++-- src/Samples/ConsolePacketLogger/Program.cs | 3 ++- 12 files changed, 25 insertions(+), 62 deletions(-) diff --git a/src/Core/NosSmooth.Comms.Abstractions/NosSmooth.Comms.Abstractions.csproj b/src/Core/NosSmooth.Comms.Abstractions/NosSmooth.Comms.Abstractions.csproj index 6f14e5b..ab5cc3b 100644 --- a/src/Core/NosSmooth.Comms.Abstractions/NosSmooth.Comms.Abstractions.csproj +++ b/src/Core/NosSmooth.Comms.Abstractions/NosSmooth.Comms.Abstractions.csproj @@ -5,15 +5,15 @@ enable enable NosSmooth.Comms.Data - 1.1.0 + 1.2.0 Add result to handshake response. - - - + + + diff --git a/src/Core/NosSmooth.Comms.Core/ClientNostaleClient.cs b/src/Core/NosSmooth.Comms.Core/ClientNostaleClient.cs index 21f0d7b..9e35d62 100644 --- a/src/Core/NosSmooth.Comms.Core/ClientNostaleClient.cs +++ b/src/Core/NosSmooth.Comms.Core/ClientNostaleClient.cs @@ -39,15 +39,6 @@ public class ClientNostaleClient : INostaleClient return Task.FromResult(Result.FromSuccess()); } - /// - public async Task SendPacketAsync(IPacket packet, CancellationToken ct = default) - { - var messageResponse = await _connection.ContractSendMessage - (new PacketMessage(PacketSource.Client, packet)) - .WaitForAsync(DefaultStates.ResponseObtained, ct: ct); - return messageResponse.IsSuccess ? messageResponse.Entity : Result.FromError(messageResponse); - } - /// public async Task SendPacketAsync(string packetString, CancellationToken ct = default) { @@ -66,15 +57,6 @@ public class ClientNostaleClient : INostaleClient return messageResponse.IsSuccess ? messageResponse.Entity : Result.FromError(messageResponse); } - /// - public async Task ReceivePacketAsync(IPacket packet, CancellationToken ct = default) - { - var messageResponse = await _connection.ContractSendMessage - (new PacketMessage(PacketSource.Server, packet)) - .WaitForAsync(DefaultStates.ResponseObtained, ct: ct); - return messageResponse.IsSuccess ? messageResponse.Entity : Result.FromError(messageResponse); - } - /// public async Task SendCommandAsync(ICommand command, CancellationToken ct = default) { diff --git a/src/Core/NosSmooth.Comms.Core/NosSmooth.Comms.Core.csproj b/src/Core/NosSmooth.Comms.Core/NosSmooth.Comms.Core.csproj index f084331..cd03ed6 100644 --- a/src/Core/NosSmooth.Comms.Core/NosSmooth.Comms.Core.csproj +++ b/src/Core/NosSmooth.Comms.Core/NosSmooth.Comms.Core.csproj @@ -4,13 +4,13 @@ net7.0 enable enable - 1.0.0 + 1.1.0 - + diff --git a/src/Local/NosSmooth.Comms.Inject/DllMain.cs b/src/Local/NosSmooth.Comms.Inject/DllMain.cs index 25509ee..c6b2620 100644 --- a/src/Local/NosSmooth.Comms.Inject/DllMain.cs +++ b/src/Local/NosSmooth.Comms.Inject/DllMain.cs @@ -116,7 +116,7 @@ public class DllMain s .AddSingleton() .AddSingleton() - .AddNostaleCore() + .AddManagedNostaleCore() .AddLocalClient() .ShareNosSmooth() .AddNamedPipeServer(p => $"NosSmooth_{Process.GetCurrentProcess().Id}") diff --git a/src/Local/NosSmooth.Comms.Inject/MessageResponders/PacketResponder.cs b/src/Local/NosSmooth.Comms.Inject/MessageResponders/PacketResponder.cs index b85e07b..1e3311a 100644 --- a/src/Local/NosSmooth.Comms.Inject/MessageResponders/PacketResponder.cs +++ b/src/Local/NosSmooth.Comms.Inject/MessageResponders/PacketResponder.cs @@ -17,13 +17,13 @@ namespace NosSmooth.Comms.Inject.MessageResponders; /// public class PacketResponder : IMessageResponder, IMessageResponder { - private readonly INostaleClient _client; + private readonly ManagedNostaleClient _client; /// /// Initializes a new instance of the class. /// /// The NosTale client. - public PacketResponder(INostaleClient client) + public PacketResponder(ManagedNostaleClient client) { _client = client; } diff --git a/src/Local/NosSmooth.Comms.Inject/NosSmooth.Comms.Inject.csproj b/src/Local/NosSmooth.Comms.Inject/NosSmooth.Comms.Inject.csproj index 9da5b78..ea424f4 100644 --- a/src/Local/NosSmooth.Comms.Inject/NosSmooth.Comms.Inject.csproj +++ b/src/Local/NosSmooth.Comms.Inject/NosSmooth.Comms.Inject.csproj @@ -5,7 +5,7 @@ enable enable true - 1.1.1 + 1.2.0 Add support for reporting errors using HandshakeResponse. Do not open a console by default, add a support for opening a console using a command or by calling OpenConsole, CloseConsole inside of DllMain. @@ -13,9 +13,9 @@ Do not open a console by default, add a support for opening a console using a co - + - + diff --git a/src/Local/NosSmooth.Comms.Local/Extensions/ServiceCollectionExtensions.cs b/src/Local/NosSmooth.Comms.Local/Extensions/ServiceCollectionExtensions.cs index 15c7dbb..5c8e0f5 100644 --- a/src/Local/NosSmooth.Comms.Local/Extensions/ServiceCollectionExtensions.cs +++ b/src/Local/NosSmooth.Comms.Local/Extensions/ServiceCollectionExtensions.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using NosSmooth.Comms.Core.Extensions; using NosSmooth.Comms.Local.MessageResponders; +using NosSmooth.Core.Contracts; using NosSmooth.Injector; +using NosSmooth.PacketSerializer.Extensions; namespace NosSmooth.Comms.Local.Extensions; @@ -24,6 +26,8 @@ public static class ServiceCollectionExtensions public static IServiceCollection AddLocalComms(this IServiceCollection serviceCollection) { return serviceCollection + .AddPacketSerialization() + .AddSingleton() .AddMultiClientHandling() .AddMessageResponder() .AddMessageResponder() diff --git a/src/Local/NosSmooth.Comms.Local/MessageResponders/PacketResponder.cs b/src/Local/NosSmooth.Comms.Local/MessageResponders/PacketResponder.cs index 3692023..0272f24 100644 --- a/src/Local/NosSmooth.Comms.Local/MessageResponders/PacketResponder.cs +++ b/src/Local/NosSmooth.Comms.Local/MessageResponders/PacketResponder.cs @@ -19,7 +19,7 @@ namespace NosSmooth.Comms.Local.MessageResponders; public class PacketResponder : IMessageResponder { private readonly INostaleClient _client; - private readonly PacketHandler _packetHandler; + private readonly IPacketHandler _packetHandler; private readonly IPacketSerializer _serializer; /// @@ -28,7 +28,7 @@ public class PacketResponder : IMessageResponder /// The nostale client. /// The packet handler. /// The serializer. - public PacketResponder(INostaleClient client, PacketHandler packetHandler, IPacketSerializer serializer) + public PacketResponder(INostaleClient client, IPacketHandler packetHandler, IPacketSerializer serializer) { _client = client; _packetHandler = packetHandler; @@ -48,7 +48,6 @@ public class PacketResponder : IMessageResponder ( _client, message.Source, - message.Packet, serialized, ct ); diff --git a/src/Local/NosSmooth.Comms.Local/MessageResponders/RawPacketResponder.cs b/src/Local/NosSmooth.Comms.Local/MessageResponders/RawPacketResponder.cs index 3af1928..f73913b 100644 --- a/src/Local/NosSmooth.Comms.Local/MessageResponders/RawPacketResponder.cs +++ b/src/Local/NosSmooth.Comms.Local/MessageResponders/RawPacketResponder.cs @@ -23,7 +23,7 @@ namespace NosSmooth.Comms.Local.MessageResponders; public class RawPacketResponder : IMessageResponder { private readonly INostaleClient _client; - private readonly PacketHandler _packetHandler; + private readonly IPacketHandler _packetHandler; private readonly IPacketSerializer _serializer; private readonly ILogger _logger; @@ -34,7 +34,7 @@ public class RawPacketResponder : IMessageResponder /// The packet handler. /// The serializer. /// The logger. - public RawPacketResponder(INostaleClient client, PacketHandler packetHandler, IPacketSerializer serializer, ILogger logger) + public RawPacketResponder(INostaleClient client, IPacketHandler packetHandler, IPacketSerializer serializer, ILogger logger) { _client = client; _packetHandler = packetHandler; @@ -45,32 +45,10 @@ public class RawPacketResponder : IMessageResponder /// public Task Respond(RawPacketMessage message, CancellationToken ct = default) { - var deserializedResult = _serializer.Deserialize(message.Packet, message.Source); - IPacket packet; - - if (!deserializedResult.IsSuccess) - { - if (deserializedResult.Error is not PacketConverterNotFoundError) - { - _logger.LogWarning("Could not parse {Packet}. Reason:", message.Packet); - _logger.LogResultError(deserializedResult); - packet = new ParsingFailedPacket(deserializedResult, message.Packet); - } - else - { - packet = new UnresolvedPacket(message.Packet.Split(' ')[0], message.Packet); - } - } - else - { - packet = deserializedResult.Entity; - } - return _packetHandler.HandlePacketAsync ( _client, message.Source, - packet, message.Packet, ct ); diff --git a/src/Local/NosSmooth.Comms.Local/NosSmooth.Comms.Local.csproj b/src/Local/NosSmooth.Comms.Local/NosSmooth.Comms.Local.csproj index 4d42fa7..4fc4bc4 100644 --- a/src/Local/NosSmooth.Comms.Local/NosSmooth.Comms.Local.csproj +++ b/src/Local/NosSmooth.Comms.Local/NosSmooth.Comms.Local.csproj @@ -4,7 +4,7 @@ net7.0 enable enable - 1.1.1 + 1.2.0 Update Inject version to 1.1.0. diff --git a/src/Samples/ConsolePacketLogger/EveryPacketResponder.cs b/src/Samples/ConsolePacketLogger/EveryPacketResponder.cs index 6b65cc2..4faccef 100644 --- a/src/Samples/ConsolePacketLogger/EveryPacketResponder.cs +++ b/src/Samples/ConsolePacketLogger/EveryPacketResponder.cs @@ -12,11 +12,10 @@ using Remora.Results; namespace ConsolePacketLogger; /// -public class EveryPacketResponder : IEveryPacketResponder +public class EveryPacketResponder : IRawPacketResponder { /// - public Task Respond(PacketEventArgs packetArgs, CancellationToken ct = default) - where TPacket : IPacket + public Task Respond(PacketEventArgs packetArgs, CancellationToken ct = default) { Console.WriteLine((packetArgs.Source == PacketSource.Server ? "[Recv]\t" : "[Sent]\t") + packetArgs.PacketString); return Task.FromResult(Result.FromSuccess()); diff --git a/src/Samples/ConsolePacketLogger/Program.cs b/src/Samples/ConsolePacketLogger/Program.cs index 7cf35e3..906f6b4 100644 --- a/src/Samples/ConsolePacketLogger/Program.cs +++ b/src/Samples/ConsolePacketLogger/Program.cs @@ -12,6 +12,7 @@ using NosSmooth.Comms.Core.Extensions; using NosSmooth.Comms.Local; using NosSmooth.Comms.Local.Extensions; using NosSmooth.Core.Extensions; +using NosSmooth.Core.Packets; using NosSmooth.Data.Abstractions; using NosSmooth.LocalBinding; using Spectre.Console; @@ -66,7 +67,7 @@ public static class Program .AddSingleClientHandling() .AddLocalComms() .AddHostedService() - .AddPacketResponder() + .AddScoped() ) .Build(); -- 2.48.1