~ruther/NosSmooth.Local

a3f9631c4658769a5647da06d9343f45c42c4d91 — Rutherther 3 years ago 13d498f
feat(client): handle exception in client process packet
1 files changed, 34 insertions(+), 26 deletions(-)

M src/Core/NosSmooth.LocalClient/NostaleLocalClient.cs
M src/Core/NosSmooth.LocalClient/NostaleLocalClient.cs => src/Core/NosSmooth.LocalClient/NostaleLocalClient.cs +34 -26
@@ 175,41 175,49 @@ public class NostaleLocalClient : BaseNostaleClient

    private async Task ProcessPacketAsync(PacketSource type, string packetString)
    {
        var packetResult = _packetSerializer.Deserialize(packetString, type);
        IPacket packet;
        if (!packetResult.IsSuccess)
        try
        {
            if (packetResult.Error is not PacketConverterNotFoundError)
            var packetResult = _packetSerializer.Deserialize(packetString, type);
            IPacket packet;
            if (!packetResult.IsSuccess)
            {
                _logger.LogWarning("Could not parse {Packet}. Reason:", packetString);
                _logger.LogResultError(packetResult);
                packet = new ParsingFailedPacket(packetResult, packetString);
                if (packetResult.Error is not PacketConverterNotFoundError)
                {
                    _logger.LogWarning("Could not parse {Packet}. Reason:", packetString);
                    _logger.LogResultError(packetResult);
                    packet = new ParsingFailedPacket(packetResult, packetString);
                }
                else
                {
                    packet = new UnresolvedPacket(packetString.Split(' ')[0], packetString);
                }
            }
            else
            {
                packet = new UnresolvedPacket(packetString.Split(' ')[0], packetString);
                packet = packetResult.Entity;
            }
        }
        else
        {
            packet = packetResult.Entity;
        }

        Result result;
        if (type == PacketSource.Server)
        {
            result = await _packetHandler.HandleReceivedPacketAsync
                (this, packet, packetString, _stopRequested ?? default);
        }
        else
        {
            result = await _packetHandler.HandleSentPacketAsync(this, packet, packetString, _stopRequested ?? default);
        }
            Result result;
            if (type == PacketSource.Server)
            {
                result = await _packetHandler.HandleReceivedPacketAsync
                    (this, packet, packetString, _stopRequested ?? default);
            }
            else
            {
                result = await _packetHandler.HandleSentPacketAsync
                    (this, packet, packetString, _stopRequested ?? default);
            }

        if (!result.IsSuccess)
            if (!result.IsSuccess)
            {
                _logger.LogError("There was an error whilst handling packet");
                _logger.LogResultError(result);
            }
        }
        catch (Exception e)
        {
            _logger.LogError("There was an error whilst handling packet");
            _logger.LogResultError(result);
            _logger.LogError(e, "The process packet threw an exception");
        }
    }


Do not follow this link