~ruther/NosSmooth.Comms

e79a2839b9c316659d9a7b607bd33d8e0beccee8 — Rutherther 2 years ago 0e59876 2023.3
feat: update to new split raw and managed client
M src/Core/NosSmooth.Comms.Abstractions/NosSmooth.Comms.Abstractions.csproj => src/Core/NosSmooth.Comms.Abstractions/NosSmooth.Comms.Abstractions.csproj +4 -4
@@ 5,15 5,15 @@
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <RootNamespace>NosSmooth.Comms.Data</RootNamespace>
        <VersionPrefix>1.1.0</VersionPrefix>
        <VersionPrefix>1.2.0</VersionPrefix>
        <PackageReleaseNotes>Add result to handshake response.</PackageReleaseNotes>
    </PropertyGroup>

    <ItemGroup>
      <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="7.0.0" />
      <PackageReference Include="NosSmooth.Core" Version="3.3.1" />
      <PackageReference Include="NosSmooth.Packets" Version="3.5.0" />
      <PackageReference Include="NosSmooth.PacketSerializer.Abstractions" Version="1.3.0" />
      <PackageReference Include="NosSmooth.Core" Version="4.0.0" />
      <PackageReference Include="NosSmooth.Packets" Version="3.5.1" />
      <PackageReference Include="NosSmooth.PacketSerializer.Abstractions" Version="1.3.1" />
    </ItemGroup>

</Project>

M src/Core/NosSmooth.Comms.Core/ClientNostaleClient.cs => src/Core/NosSmooth.Comms.Core/ClientNostaleClient.cs +0 -18
@@ 40,15 40,6 @@ public class ClientNostaleClient : INostaleClient
    }

    /// <inheritdoc />
    public async Task<Result> 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);
    }

    /// <inheritdoc />
    public async Task<Result> SendPacketAsync(string packetString, CancellationToken ct = default)
    {
        var messageResponse = await _connection.ContractSendMessage


@@ 67,15 58,6 @@ public class ClientNostaleClient : INostaleClient
    }

    /// <inheritdoc />
    public async Task<Result> 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);
    }

    /// <inheritdoc />
    public async Task<Result> SendCommandAsync(ICommand command, CancellationToken ct = default)
    {
        var messageResponse = await _connection.ContractSendMessage

M src/Core/NosSmooth.Comms.Core/NosSmooth.Comms.Core.csproj => src/Core/NosSmooth.Comms.Core/NosSmooth.Comms.Core.csproj +2 -2
@@ 4,13 4,13 @@
        <TargetFramework>net7.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <VersionPrefix>1.0.0</VersionPrefix>
        <VersionPrefix>1.1.0</VersionPrefix>
    </PropertyGroup>

    <ItemGroup>
      <PackageReference Include="MessagePack" Version="2.4.59" />
      <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="7.0.0" />
      <PackageReference Include="NosSmooth.Core" Version="3.3.1" />
      <PackageReference Include="NosSmooth.Core" Version="4.0.0" />
    </ItemGroup>

    <ItemGroup>

M src/Local/NosSmooth.Comms.Inject/DllMain.cs => src/Local/NosSmooth.Comms.Inject/DllMain.cs +1 -1
@@ 116,7 116,7 @@ public class DllMain
                    s
                        .AddSingleton<ClientState>()
                        .AddSingleton<CallbackConfigRepository>()
                        .AddNostaleCore()
                        .AddManagedNostaleCore()
                        .AddLocalClient()
                        .ShareNosSmooth()
                        .AddNamedPipeServer(p => $"NosSmooth_{Process.GetCurrentProcess().Id}")

M src/Local/NosSmooth.Comms.Inject/MessageResponders/PacketResponder.cs => src/Local/NosSmooth.Comms.Inject/MessageResponders/PacketResponder.cs +2 -2
@@ 17,13 17,13 @@ namespace NosSmooth.Comms.Inject.MessageResponders;
/// </summary>
public class PacketResponder : IMessageResponder<RawPacketMessage>, IMessageResponder<PacketMessage>
{
    private readonly INostaleClient _client;
    private readonly ManagedNostaleClient _client;

    /// <summary>
    /// Initializes a new instance of the <see cref="PacketResponder"/> class.
    /// </summary>
    /// <param name="client">The NosTale client.</param>
    public PacketResponder(INostaleClient client)
    public PacketResponder(ManagedNostaleClient client)
    {
        _client = client;
    }

M src/Local/NosSmooth.Comms.Inject/NosSmooth.Comms.Inject.csproj => src/Local/NosSmooth.Comms.Inject/NosSmooth.Comms.Inject.csproj +3 -3
@@ 5,7 5,7 @@
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <EnableDynamicLoading>true</EnableDynamicLoading>
        <VersionPrefix>1.1.1</VersionPrefix>
        <VersionPrefix>1.2.0</VersionPrefix>
        <PackageReleaseNotes>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.</PackageReleaseNotes>
    </PropertyGroup>


@@ 13,9 13,9 @@ Do not open a console by default, add a support for opening a console using a co
    <ItemGroup>
      <PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.0" />
      <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="7.0.0" />
      <PackageReference Include="NosSmooth.Extensions.SharedBinding" Version="0.0.1" />
      <PackageReference Include="NosSmooth.Extensions.SharedBinding" Version="0.1.0" />
      <PackageReference Include="NosSmooth.LocalBinding" Version="1.0.0" />
      <PackageReference Include="NosSmooth.LocalClient" Version="1.0.0" />
      <PackageReference Include="NosSmooth.LocalClient" Version="1.1.0" />
    </ItemGroup>

    <ItemGroup>

M src/Local/NosSmooth.Comms.Local/Extensions/ServiceCollectionExtensions.cs => src/Local/NosSmooth.Comms.Local/Extensions/ServiceCollectionExtensions.cs +4 -0
@@ 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<Contractor>()
            .AddMultiClientHandling()
            .AddMessageResponder<PacketResponder>()
            .AddMessageResponder<RawPacketResponder>()

M src/Local/NosSmooth.Comms.Local/MessageResponders/PacketResponder.cs => src/Local/NosSmooth.Comms.Local/MessageResponders/PacketResponder.cs +2 -3
@@ 19,7 19,7 @@ namespace NosSmooth.Comms.Local.MessageResponders;
public class PacketResponder : IMessageResponder<PacketMessage>
{
    private readonly INostaleClient _client;
    private readonly PacketHandler _packetHandler;
    private readonly IPacketHandler _packetHandler;
    private readonly IPacketSerializer _serializer;

    /// <summary>


@@ 28,7 28,7 @@ public class PacketResponder : IMessageResponder<PacketMessage>
    /// <param name="client">The nostale client.</param>
    /// <param name="packetHandler">The packet handler.</param>
    /// <param name="serializer">The serializer.</param>
    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<PacketMessage>
        (
            _client,
            message.Source,
            message.Packet,
            serialized,
            ct
        );

M src/Local/NosSmooth.Comms.Local/MessageResponders/RawPacketResponder.cs => src/Local/NosSmooth.Comms.Local/MessageResponders/RawPacketResponder.cs +2 -24
@@ 23,7 23,7 @@ namespace NosSmooth.Comms.Local.MessageResponders;
public class RawPacketResponder : IMessageResponder<RawPacketMessage>
{
    private readonly INostaleClient _client;
    private readonly PacketHandler _packetHandler;
    private readonly IPacketHandler _packetHandler;
    private readonly IPacketSerializer _serializer;
    private readonly ILogger<RawPacketResponder> _logger;



@@ 34,7 34,7 @@ public class RawPacketResponder : IMessageResponder<RawPacketMessage>
    /// <param name="packetHandler">The packet handler.</param>
    /// <param name="serializer">The serializer.</param>
    /// <param name="logger">The logger.</param>
    public RawPacketResponder(INostaleClient client, PacketHandler packetHandler, IPacketSerializer serializer, ILogger<RawPacketResponder> logger)
    public RawPacketResponder(INostaleClient client, IPacketHandler packetHandler, IPacketSerializer serializer, ILogger<RawPacketResponder> logger)
    {
        _client = client;
        _packetHandler = packetHandler;


@@ 45,32 45,10 @@ public class RawPacketResponder : IMessageResponder<RawPacketMessage>
    /// <inheritdoc />
    public Task<Result> 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
        );

M src/Local/NosSmooth.Comms.Local/NosSmooth.Comms.Local.csproj => src/Local/NosSmooth.Comms.Local/NosSmooth.Comms.Local.csproj +1 -1
@@ 4,7 4,7 @@
        <TargetFramework>net7.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <VersionPrefix>1.1.1</VersionPrefix>
        <VersionPrefix>1.2.0</VersionPrefix>
        <PackageReleaseNotes>Update Inject version to 1.1.0.</PackageReleaseNotes>
    </PropertyGroup>


M src/Samples/ConsolePacketLogger/EveryPacketResponder.cs => src/Samples/ConsolePacketLogger/EveryPacketResponder.cs +2 -3
@@ 12,11 12,10 @@ using Remora.Results;
namespace ConsolePacketLogger;

/// <inheritdoc />
public class EveryPacketResponder : IEveryPacketResponder
public class EveryPacketResponder : IRawPacketResponder
{
    /// <inheritdoc />
    public Task<Result> Respond<TPacket>(PacketEventArgs<TPacket> packetArgs, CancellationToken ct = default)
        where TPacket : IPacket
    public Task<Result> Respond(PacketEventArgs packetArgs, CancellationToken ct = default)
    {
        Console.WriteLine((packetArgs.Source == PacketSource.Server ? "[Recv]\t" : "[Sent]\t") + packetArgs.PacketString);
        return Task.FromResult(Result.FromSuccess());

M src/Samples/ConsolePacketLogger/Program.cs => src/Samples/ConsolePacketLogger/Program.cs +2 -1
@@ 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<ClientService>()
                    .AddPacketResponder<EveryPacketResponder>()
                    .AddScoped<IRawPacketResponder, EveryPacketResponder>()
            )
            .Build();


Do not follow this link