< Summary - Combined Code Coverage

Information
Class: NLightning.Daemon.Ipc.Handlers.OpenChannelSubscriptionIpcHandler
Assembly: NLightning.Daemon
File(s): /home/runner/work/NLightning/NLightning/src/NLightning.Daemon/Ipc/Handlers/OpenChannelSubscriptionIpcHandler.cs
Tag: 57_24045730253
Line coverage
0%
Covered lines: 0
Uncovered lines: 49
Coverable lines: 49
Total lines: 98
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 2
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Command()100%210%
.ctor(...)100%210%
HandleAsync()0%620%

File(s)

/home/runner/work/NLightning/NLightning/src/NLightning.Daemon/Ipc/Handlers/OpenChannelSubscriptionIpcHandler.cs

#LineLine coverage
 1using MessagePack;
 2using Microsoft.Extensions.DependencyInjection;
 3using Microsoft.Extensions.Logging;
 4
 5namespace NLightning.Daemon.Ipc.Handlers;
 6
 7using Daemon.Handlers;
 8using Daemon.Interfaces;
 9using Domain.Client.Constants;
 10using Domain.Client.Enums;
 11using Domain.Client.Exceptions;
 12using Domain.Client.Requests;
 13using Domain.Client.Responses;
 14using Domain.Exceptions;
 15using Interfaces;
 16using Services.Ipc.Factories;
 17using Transport.Ipc;
 18using Transport.Ipc.Requests;
 19using Transport.Ipc.Responses;
 20
 21public class OpenChannelSubscriptionIpcHandler : IIpcCommandHandler
 22{
 23    private readonly ILogger<OpenChannelSubscriptionIpcHandler> _logger;
 24    private readonly IServiceProvider _serviceProvider;
 25
 026    public ClientCommand Command => ClientCommand.OpenChannelSubscription;
 27
 028    public OpenChannelSubscriptionIpcHandler(ILogger<OpenChannelSubscriptionIpcHandler> logger,
 029                                             IServiceProvider serviceProvider)
 30    {
 031        _logger = logger;
 032        _serviceProvider = serviceProvider;
 033    }
 34
 35    public async Task<IpcEnvelope> HandleAsync(IpcEnvelope envelope, CancellationToken ct)
 36    {
 37        try
 38        {
 39            // Deserialize the request
 040            var request =
 041                MessagePackSerializer.Deserialize<OpenChannelSubscriptionIpcRequest>(
 042                    envelope.Payload, cancellationToken: ct);
 43
 44            // Get the client handler
 045            using var scope = _serviceProvider.CreateScope();
 046            var openChannelClientSubscriptionHandler =
 047                scope.ServiceProvider.GetService(
 048                        typeof(IClientCommandHandler<OpenChannelClientSubscriptionRequest,
 049                            OpenChannelClientSubscriptionResponse>)) as
 050                    OpenChannelClientSubscriptionHandler ??
 051                throw new InvalidOperationException(
 052                    $"Unable to get service {nameof(OpenChannelClientSubscriptionHandler)}");
 53
 054            var clientResponse = await openChannelClientSubscriptionHandler.HandleAsync(request.ToClientRequest(), ct);
 55
 056            var payload = MessagePackSerializer.Serialize(
 057                OpenChannelSubscriptionIpcResponse.FromClientResponse(clientResponse),
 058                cancellationToken: ct);
 059            return new IpcEnvelope
 060            {
 061                Version = envelope.Version,
 062                Command = envelope.Command,
 063                CorrelationId = envelope.CorrelationId,
 064                Kind = IpcEnvelopeKind.Response,
 065                Payload = payload
 066            };
 67        }
 068        catch (ClientException ce)
 69        {
 070            _logger.LogError(ce, "Error while handling OpenChannelSubscription");
 071            return IpcErrorFactory.CreateErrorEnvelope(envelope, ce.Message, ce.Message);
 72        }
 073        catch (InvalidOperationException oe)
 74        {
 075            _logger.LogError(oe, "The operation could not be completed");
 076            return IpcErrorFactory.CreateErrorEnvelope(envelope, ErrorCodes.InvalidOperation,
 077                                                       $"The operation could not be completed: {oe.Message}");
 78        }
 079        catch (ConnectionException ce)
 80        {
 081            _logger.LogError(ce, "Failed to connect to peer");
 082            return IpcErrorFactory.CreateErrorEnvelope(envelope, ErrorCodes.ConnectionError,
 083                                                       $"Connection failed: {ce.Message}");
 84        }
 085        catch (ChannelErrorException cee)
 86        {
 087            _logger.LogError(cee, "Error opening Channel");
 088            return IpcErrorFactory.CreateErrorEnvelope(envelope, ErrorCodes.ConnectionError,
 089                                                       $"Channel Error: {cee.Message}");
 90        }
 091        catch (Exception e)
 92        {
 093            _logger.LogError(e, "Error opening channel");
 094            return IpcErrorFactory.CreateErrorEnvelope(envelope, ErrorCodes.ServerError,
 095                                                       $"Error opening channel: {e.Message}");
 96        }
 097    }
 98}