< Summary - Combined Code Coverage

Information
Class: NLightning.Infrastructure.Serialization.Factories.PayloadSerializerFactory
Assembly: NLightning.Infrastructure.Serialization
File(s): /home/runner/work/nlightning/nlightning/src/NLightning.Infrastructure.Serialization/Factories/PayloadSerializerFactory.cs
Tag: 30_15166811759
Line coverage
100%
Covered lines: 79
Uncovered lines: 0
Coverable lines: 79
Total lines: 111
Line coverage: 100%
Branch coverage
50%
Covered branches: 1
Total branches: 2
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
GetSerializer()100%11100%
GetSerializer(...)50%22100%
RegisterSerializers()100%11100%
RegisterTypeDictionary()100%11100%

File(s)

/home/runner/work/nlightning/nlightning/src/NLightning.Infrastructure.Serialization/Factories/PayloadSerializerFactory.cs

#LineLine coverage
 1namespace NLightning.Infrastructure.Serialization.Factories;
 2
 3using Domain.Protocol.Constants;
 4using Domain.Protocol.Payloads;
 5using Domain.Protocol.Payloads.Interfaces;
 6using Domain.Serialization.Factories;
 7using Domain.Serialization.Payloads;
 8using Interfaces;
 9using Payloads;
 10
 11public class PayloadSerializerFactory : IPayloadSerializerFactory
 12{
 13    private readonly IFeatureSetSerializer _featureSetSerializer;
 414    private readonly Dictionary<Type, IPayloadSerializer> _serializers = new();
 415    private readonly Dictionary<ushort, Type> _ushortTypeDictionary = new();
 16    private readonly IValueObjectSerializerFactory _valueObjectSerializerFactory;
 17
 418    public PayloadSerializerFactory(IFeatureSetSerializer featureSetSerializer,
 419                                    IValueObjectSerializerFactory valueObjectSerializerFactory)
 20    {
 421        _featureSetSerializer = featureSetSerializer;
 422        _valueObjectSerializerFactory = valueObjectSerializerFactory;
 23
 424        RegisterSerializers();
 425        RegisterTypeDictionary();
 426    }
 27
 28    public IPayloadSerializer<TPayloadType>? GetSerializer<TPayloadType>() where TPayloadType : IMessagePayload
 29    {
 18430        return _serializers.GetValueOrDefault(typeof(TPayloadType)) as IPayloadSerializer<TPayloadType>;
 31    }
 32
 33    public IPayloadSerializer? GetSerializer(ushort messageType)
 34    {
 14835        var type = _ushortTypeDictionary.GetValueOrDefault(messageType);
 14836        return type is null ? null : _serializers.GetValueOrDefault(type);
 37    }
 38
 39    private void RegisterSerializers()
 40    {
 441        _serializers.Add(typeof(AcceptChannel2Payload),
 442                         new AcceptChannel2PayloadSerializer(_valueObjectSerializerFactory));
 443        _serializers.Add(typeof(ChannelReadyPayload), new ChannelReadyPayloadSerializer(_valueObjectSerializerFactory));
 444        _serializers.Add(typeof(ChannelReestablishPayload),
 445                         new ChannelReestablishPayloadSerializer(_valueObjectSerializerFactory));
 446        _serializers.Add(typeof(ClosingSignedPayload),
 447                         new ClosingSignedPayloadSerializer(_valueObjectSerializerFactory));
 448        _serializers.Add(typeof(CommitmentSignedPayload),
 449                         new CommitmentSignedPayloadSerializer(_valueObjectSerializerFactory));
 450        _serializers.Add(typeof(ErrorPayload), new ErrorPayloadSerializer(_valueObjectSerializerFactory));
 451        _serializers.Add(typeof(InitPayload), new InitPayloadSerializer(_featureSetSerializer));
 452        _serializers.Add(typeof(OpenChannel2Payload), new OpenChannel2PayloadSerializer(_valueObjectSerializerFactory));
 453        _serializers.Add(typeof(PingPayload), new PingPayloadSerializer());
 454        _serializers.Add(typeof(PongPayload), new PongPayloadSerializer());
 455        _serializers.Add(typeof(RevokeAndAckPayload), new RevokeAndAckPayloadSerializer(_valueObjectSerializerFactory));
 456        _serializers.Add(typeof(ShutdownPayload), new ShutdownPayloadSerializer(_valueObjectSerializerFactory));
 457        _serializers.Add(typeof(StfuPayload), new StfuPayloadSerializer(_valueObjectSerializerFactory));
 458        _serializers.Add(typeof(TxAbortPayload), new TxAbortPayloadSerializer(_valueObjectSerializerFactory));
 459        _serializers.Add(typeof(TxAckRbfPayload), new TxAckRbfPayloadSerializer(_valueObjectSerializerFactory));
 460        _serializers.Add(typeof(TxAddInputPayload), new TxAddInputPayloadSerializer(_valueObjectSerializerFactory));
 461        _serializers.Add(typeof(TxAddOutputPayload), new TxAddOutputPayloadSerializer(_valueObjectSerializerFactory));
 462        _serializers.Add(typeof(TxCompletePayload), new TxCompletePayloadSerializer(_valueObjectSerializerFactory));
 463        _serializers.Add(typeof(TxInitRbfPayload), new TxInitRbfPayloadSerializer(_valueObjectSerializerFactory));
 464        _serializers.Add(typeof(TxRemoveInputPayload),
 465                         new TxRemoveInputPayloadSerializer(_valueObjectSerializerFactory));
 466        _serializers.Add(typeof(TxRemoveOutputPayload),
 467                         new TxRemoveOutputPayloadSerializer(_valueObjectSerializerFactory));
 468        _serializers.Add(typeof(TxSignaturesPayload), new TxSignaturesPayloadSerializer(_valueObjectSerializerFactory));
 469        _serializers.Add(typeof(UpdateAddHtlcPayload),
 470                         new UpdateAddHtlcPayloadSerializer(_valueObjectSerializerFactory));
 471        _serializers.Add(typeof(UpdateFailHtlcPayload),
 472                         new UpdateFailHtlcPayloadSerializer(_valueObjectSerializerFactory));
 473        _serializers.Add(typeof(UpdateFailMalformedHtlcPayload),
 474                         new UpdateFailMalformedHtlcPayloadSerializer(_valueObjectSerializerFactory));
 475        _serializers.Add(typeof(UpdateFeePayload), new UpdateFeePayloadSerializer(_valueObjectSerializerFactory));
 476        _serializers.Add(typeof(UpdateFulfillHtlcPayload),
 477                         new UpdateFulfillHtlcPayloadSerializer(_valueObjectSerializerFactory));
 478    }
 79
 80    private void RegisterTypeDictionary()
 81    {
 482        _ushortTypeDictionary.Add(MessageTypes.ACCEPT_CHANNEL_2, typeof(AcceptChannel2Payload));
 483        _ushortTypeDictionary.Add(MessageTypes.CHANNEL_READY, typeof(ChannelReadyPayload));
 484        _ushortTypeDictionary.Add(MessageTypes.CHANNEL_REESTABLISH, typeof(ChannelReestablishPayload));
 485        _ushortTypeDictionary.Add(MessageTypes.CLOSING_SIGNED, typeof(ClosingSignedPayload));
 486        _ushortTypeDictionary.Add(MessageTypes.COMMITMENT_SIGNED, typeof(CommitmentSignedPayload));
 487        _ushortTypeDictionary.Add(MessageTypes.ERROR, typeof(ErrorPayload));
 488        _ushortTypeDictionary.Add(MessageTypes.INIT, typeof(InitPayload));
 489        _ushortTypeDictionary.Add(MessageTypes.OPEN_CHANNEL_2, typeof(OpenChannel2Payload));
 490        _ushortTypeDictionary.Add(MessageTypes.PING, typeof(PingPayload));
 491        _ushortTypeDictionary.Add(MessageTypes.PONG, typeof(PongPayload));
 492        _ushortTypeDictionary.Add(MessageTypes.REVOKE_AND_ACK, typeof(RevokeAndAckPayload));
 493        _ushortTypeDictionary.Add(MessageTypes.SHUTDOWN, typeof(ShutdownPayload));
 494        _ushortTypeDictionary.Add(MessageTypes.STFU, typeof(StfuPayload));
 495        _ushortTypeDictionary.Add(MessageTypes.TX_ABORT, typeof(TxAbortPayload));
 496        _ushortTypeDictionary.Add(MessageTypes.TX_ACK_RBF, typeof(TxAckRbfPayload));
 497        _ushortTypeDictionary.Add(MessageTypes.TX_ADD_INPUT, typeof(TxAddInputPayload));
 498        _ushortTypeDictionary.Add(MessageTypes.TX_ADD_OUTPUT, typeof(TxAddOutputPayload));
 499        _ushortTypeDictionary.Add(MessageTypes.TX_COMPLETE, typeof(TxCompletePayload));
 4100        _ushortTypeDictionary.Add(MessageTypes.TX_INIT_RBF, typeof(TxInitRbfPayload));
 4101        _ushortTypeDictionary.Add(MessageTypes.TX_REMOVE_INPUT, typeof(TxRemoveInputPayload));
 4102        _ushortTypeDictionary.Add(MessageTypes.TX_REMOVE_OUTPUT, typeof(TxRemoveOutputPayload));
 4103        _ushortTypeDictionary.Add(MessageTypes.TX_SIGNATURES, typeof(TxSignaturesPayload));
 4104        _ushortTypeDictionary.Add(MessageTypes.UPDATE_ADD_HTLC, typeof(UpdateAddHtlcPayload));
 4105        _ushortTypeDictionary.Add(MessageTypes.UPDATE_FAIL_HTLC, typeof(UpdateFailHtlcPayload));
 4106        _ushortTypeDictionary.Add(MessageTypes.UPDATE_FAIL_MALFORMED_HTLC, typeof(UpdateFailMalformedHtlcPayload));
 4107        _ushortTypeDictionary.Add(MessageTypes.UPDATE_FEE, typeof(UpdateFeePayload));
 4108        _ushortTypeDictionary.Add(MessageTypes.UPDATE_FULFILL_HTLC, typeof(UpdateFulfillHtlcPayload));
 4109        _ushortTypeDictionary.Add(MessageTypes.WARNING, typeof(ErrorPayload));
 4110    }
 111}