< Summary - Combined Code Coverage

Information
Class: NLightning.Daemon.Ipc.Handlers.ListPeersIpcHandler
Assembly: NLightning.Daemon
File(s): /home/runner/work/NLightning/NLightning/src/NLightning.Daemon/Ipc/Handlers/ListPeersIpcHandler.cs
Tag: 57_24045730253
Line coverage
0%
Covered lines: 0
Uncovered lines: 32
Coverable lines: 32
Total lines: 67
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 6
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%4260%

File(s)

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

#LineLine coverage
 1using MessagePack;
 2using Microsoft.Extensions.Logging;
 3
 4namespace NLightning.Daemon.Ipc.Handlers;
 5
 6using Domain.Client.Constants;
 7using Domain.Client.Enums;
 8using Domain.Node.Interfaces;
 9using Interfaces;
 10using Services.Ipc.Factories;
 11using Transport.Ipc;
 12using Transport.Ipc.Responses;
 13
 14internal class ListPeersIpcHandler : IIpcCommandHandler
 15{
 16    private readonly IPeerManager _peerManager;
 17    private readonly ILogger<ListPeersIpcHandler> _logger;
 18
 019    public ClientCommand Command => ClientCommand.ListPeers;
 20
 021    public ListPeersIpcHandler(IPeerManager peerManager, ILogger<ListPeersIpcHandler> logger)
 22    {
 023        _peerManager = peerManager;
 024        _logger = logger;
 025    }
 26
 27    public Task<IpcEnvelope> HandleAsync(IpcEnvelope envelope, CancellationToken ct)
 28    {
 29        try
 30        {
 031            var resp = _peerManager.ListPeers();
 032            var ipcResp = new ListPeersIpcResponse();
 33
 034            if (resp.Count > 0)
 35            {
 036                ipcResp.Peers = new List<PeerInfoIpcResponse>(resp.Count);
 037                foreach (var peer in resp)
 38                {
 039                    ipcResp.Peers.Add(new PeerInfoIpcResponse
 040                    {
 041                        Address = $"{peer.Host}:{peer.Port}",
 042                        Connected = true,
 043                        Features = peer.Features,
 044                        Id = peer.NodeId,
 045                        ChannelQty = (uint)(peer.Channels?.Count ?? 0)
 046                    });
 47                }
 48            }
 49
 050            var payload = MessagePackSerializer.Serialize(ipcResp, cancellationToken: ct);
 051            var responseEnvelope = new IpcEnvelope
 052            {
 053                Version = envelope.Version,
 054                Command = envelope.Command,
 055                CorrelationId = envelope.CorrelationId,
 056                Kind = IpcEnvelopeKind.Response,
 057                Payload = payload
 058            };
 059            return Task.FromResult(responseEnvelope);
 60        }
 061        catch (Exception e)
 62        {
 063            _logger.LogError(e, "Error listing peers");
 064            return Task.FromResult(IpcErrorFactory.CreateErrorEnvelope(envelope, ErrorCodes.ServerError, e.Message));
 65        }
 066    }
 67}