< Summary - Combined Code Coverage

Information
Class: NLightning.Infrastructure.Serialization.Messages.Types.OpenChannel1MessageTypeSerializer
Assembly: NLightning.Infrastructure.Serialization
File(s): /home/runner/work/NLightning/NLightning/src/NLightning.Infrastructure.Serialization/Messages/Types/OpenChannel1MessageTypeSerializer.cs
Tag: 57_24045730253
Line coverage
0%
Covered lines: 0
Uncovered lines: 39
Coverable lines: 39
Total lines: 93
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 20
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
SerializeAsync()0%2040%
DeserializeAsync()0%272160%
NLightning-Domain-Serialization-Interfaces-IMessageTypeSerializer-DeserializeAsync()100%210%

File(s)

/home/runner/work/NLightning/NLightning/src/NLightning.Infrastructure.Serialization/Messages/Types/OpenChannel1MessageTypeSerializer.cs

#LineLine coverage
 1using System.Runtime.Serialization;
 2
 3namespace NLightning.Infrastructure.Serialization.Messages.Types;
 4
 5using Domain.Protocol.Constants;
 6using Domain.Protocol.Interfaces;
 7using Domain.Protocol.Messages;
 8using Domain.Protocol.Payloads;
 9using Domain.Protocol.Tlv;
 10using Domain.Serialization.Interfaces;
 11using Exceptions;
 12using Interfaces;
 13
 14public class OpenChannel1MessageTypeSerializer : IMessageTypeSerializer<OpenChannel1Message>
 15{
 16    private readonly IPayloadSerializerFactory _payloadSerializerFactory;
 17    private readonly ITlvConverterFactory _tlvConverterFactory;
 18    private readonly ITlvStreamSerializer _tlvStreamSerializer;
 19
 020    public OpenChannel1MessageTypeSerializer(IPayloadSerializerFactory payloadSerializerFactory,
 021                                             ITlvConverterFactory tlvConverterFactory,
 022                                             ITlvStreamSerializer tlvStreamSerializer)
 23    {
 024        _payloadSerializerFactory = payloadSerializerFactory;
 025        _tlvConverterFactory = tlvConverterFactory;
 026        _tlvStreamSerializer = tlvStreamSerializer;
 027    }
 28
 29    public async Task SerializeAsync(IMessage message, Stream stream)
 30    {
 031        if (message is not OpenChannel1Message openChannel1Message)
 032            throw new SerializationException($"Message is not of type {nameof(OpenChannel1Message)}");
 33
 34        // Get the payload serializer
 035        var payloadTypeSerializer = _payloadSerializerFactory.GetSerializer(message.Type)
 036                                 ?? throw new SerializationException("No serializer found for payload type");
 037        await payloadTypeSerializer.SerializeAsync(message.Payload, stream);
 38
 39        // Serialize the TLV stream
 040        await _tlvStreamSerializer.SerializeAsync(openChannel1Message.Extension, stream);
 041    }
 42
 43    /// <summary>
 44    /// Deserialize an OpenChannel2Message from a stream.
 45    /// </summary>
 46    /// <param name="stream">The stream to deserialize from.</param>
 47    /// <returns>The deserialized OpenChannel1Message.</returns>
 48    /// <exception cref="MessageSerializationException">Error deserializing OpenChannel2Message</exception>
 49    public async Task<OpenChannel1Message> DeserializeAsync(Stream stream)
 50    {
 51        try
 52        {
 53            // Deserialize payload
 054            var payloadSerializer = _payloadSerializerFactory.GetSerializer<OpenChannel1Payload>()
 055                                 ?? throw new SerializationException("No serializer found for payload type");
 056            var payload = await payloadSerializer.DeserializeAsync(stream)
 057                       ?? throw new SerializationException("Error serializing payload");
 58
 59            // Deserialize extension
 060            if (stream.Position >= stream.Length)
 061                throw new SerializationException("Required extension is missing");
 62
 063            var extension = await _tlvStreamSerializer.DeserializeAsync(stream) ?? throw new SerializationException("Req
 064            UpfrontShutdownScriptTlv? upfrontShutdownScriptTlv = null;
 065            if (extension.TryGetTlv(TlvConstants.UpfrontShutdownScript, out var baseUpfrontShutdownTlv))
 66            {
 067                var tlvConverter = _tlvConverterFactory.GetConverter<UpfrontShutdownScriptTlv>()
 068                                ?? throw new SerializationException(
 069                                       $"No serializer found for tlv type {nameof(UpfrontShutdownScriptTlv)}");
 070                upfrontShutdownScriptTlv = tlvConverter.ConvertFromBase(baseUpfrontShutdownTlv!);
 71            }
 72
 073            if (!extension.TryGetTlv(TlvConstants.ChannelType, out var baseChannelTypeTlv))
 074                throw new SerializationException("Required extension is missing");
 75
 076            var channelTypeTlvConverter =
 077                _tlvConverterFactory.GetConverter<ChannelTypeTlv>()
 078             ?? throw new SerializationException($"No serializer found for tlv type {nameof(ChannelTypeTlv)}");
 079            var channelTypeTlv = channelTypeTlvConverter.ConvertFromBase(baseChannelTypeTlv!);
 80
 081            return new OpenChannel1Message(payload, channelTypeTlv, upfrontShutdownScriptTlv);
 82        }
 083        catch (SerializationException e)
 84        {
 085            throw new MessageSerializationException("Error deserializing OpenChannel1Message", e);
 86        }
 087    }
 88
 89    async Task<IMessage> IMessageTypeSerializer.DeserializeAsync(Stream stream)
 90    {
 091        return await DeserializeAsync(stream);
 092    }
 93}