< 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: 36_15743069263
Line coverage
100%
Covered lines: 90
Uncovered lines: 0
Coverable lines: 90
Total lines: 122
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
 1using NLightning.Domain.Protocol.Interfaces;
 2using NLightning.Domain.Serialization.Interfaces;
 3
 4namespace NLightning.Infrastructure.Serialization.Factories;
 5
 6using Domain.Protocol.Constants;
 7using Domain.Protocol.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<MessageTypes, Type> _messageTypeDictionary = 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(MessageTypes messageType)
 34    {
 14835        var type = _messageTypeDictionary.GetValueOrDefault(messageType);
 14836        return type is null ? null : _serializers.GetValueOrDefault(type);
 37    }
 38
 39    private void RegisterSerializers()
 40    {
 441        _serializers.Add(typeof(AcceptChannel1Payload),
 442                         new AcceptChannel1PayloadSerializer(_valueObjectSerializerFactory));
 443        _serializers.Add(typeof(AcceptChannel2Payload),
 444                         new AcceptChannel2PayloadSerializer(_valueObjectSerializerFactory));
 445        _serializers.Add(typeof(ChannelReadyPayload), new ChannelReadyPayloadSerializer(_valueObjectSerializerFactory));
 446        _serializers.Add(typeof(ChannelReestablishPayload),
 447                         new ChannelReestablishPayloadSerializer(_valueObjectSerializerFactory));
 448        _serializers.Add(typeof(ClosingSignedPayload),
 449                         new ClosingSignedPayloadSerializer(_valueObjectSerializerFactory));
 450        _serializers.Add(typeof(CommitmentSignedPayload),
 451                         new CommitmentSignedPayloadSerializer(_valueObjectSerializerFactory));
 452        _serializers.Add(typeof(ErrorPayload), new ErrorPayloadSerializer(_valueObjectSerializerFactory));
 453        _serializers.Add(typeof(FundingCreatedPayload),
 454                         new FundingCreatedPayloadSerializer(_valueObjectSerializerFactory));
 455        _serializers.Add(typeof(FundingSignedPayload),
 456                         new FundingSignedPayloadSerializer(_valueObjectSerializerFactory));
 457        _serializers.Add(typeof(InitPayload), new InitPayloadSerializer(_featureSetSerializer));
 458        _serializers.Add(typeof(OpenChannel1Payload), new OpenChannel1PayloadSerializer(_valueObjectSerializerFactory));
 459        _serializers.Add(typeof(OpenChannel2Payload), new OpenChannel2PayloadSerializer(_valueObjectSerializerFactory));
 460        _serializers.Add(typeof(PingPayload), new PingPayloadSerializer());
 461        _serializers.Add(typeof(PongPayload), new PongPayloadSerializer());
 462        _serializers.Add(typeof(RevokeAndAckPayload), new RevokeAndAckPayloadSerializer(_valueObjectSerializerFactory));
 463        _serializers.Add(typeof(ShutdownPayload), new ShutdownPayloadSerializer(_valueObjectSerializerFactory));
 464        _serializers.Add(typeof(StfuPayload), new StfuPayloadSerializer(_valueObjectSerializerFactory));
 465        _serializers.Add(typeof(TxAbortPayload), new TxAbortPayloadSerializer(_valueObjectSerializerFactory));
 466        _serializers.Add(typeof(TxAckRbfPayload), new TxAckRbfPayloadSerializer(_valueObjectSerializerFactory));
 467        _serializers.Add(typeof(TxAddInputPayload), new TxAddInputPayloadSerializer(_valueObjectSerializerFactory));
 468        _serializers.Add(typeof(TxAddOutputPayload), new TxAddOutputPayloadSerializer(_valueObjectSerializerFactory));
 469        _serializers.Add(typeof(TxCompletePayload), new TxCompletePayloadSerializer(_valueObjectSerializerFactory));
 470        _serializers.Add(typeof(TxInitRbfPayload), new TxInitRbfPayloadSerializer(_valueObjectSerializerFactory));
 471        _serializers.Add(typeof(TxRemoveInputPayload),
 472                         new TxRemoveInputPayloadSerializer(_valueObjectSerializerFactory));
 473        _serializers.Add(typeof(TxRemoveOutputPayload),
 474                         new TxRemoveOutputPayloadSerializer(_valueObjectSerializerFactory));
 475        _serializers.Add(typeof(TxSignaturesPayload), new TxSignaturesPayloadSerializer(_valueObjectSerializerFactory));
 476        _serializers.Add(typeof(UpdateAddHtlcPayload),
 477                         new UpdateAddHtlcPayloadSerializer(_valueObjectSerializerFactory));
 478        _serializers.Add(typeof(UpdateFailHtlcPayload),
 479                         new UpdateFailHtlcPayloadSerializer(_valueObjectSerializerFactory));
 480        _serializers.Add(typeof(UpdateFailMalformedHtlcPayload),
 481                         new UpdateFailMalformedHtlcPayloadSerializer(_valueObjectSerializerFactory));
 482        _serializers.Add(typeof(UpdateFeePayload), new UpdateFeePayloadSerializer(_valueObjectSerializerFactory));
 483        _serializers.Add(typeof(UpdateFulfillHtlcPayload),
 484                         new UpdateFulfillHtlcPayloadSerializer(_valueObjectSerializerFactory));
 485    }
 86
 87    private void RegisterTypeDictionary()
 88    {
 489        _messageTypeDictionary.Add(MessageTypes.AcceptChannel, typeof(AcceptChannel1Payload));
 490        _messageTypeDictionary.Add(MessageTypes.AcceptChannel2, typeof(AcceptChannel2Payload));
 491        _messageTypeDictionary.Add(MessageTypes.ChannelReady, typeof(ChannelReadyPayload));
 492        _messageTypeDictionary.Add(MessageTypes.ChannelReestablish, typeof(ChannelReestablishPayload));
 493        _messageTypeDictionary.Add(MessageTypes.ClosingSigned, typeof(ClosingSignedPayload));
 494        _messageTypeDictionary.Add(MessageTypes.CommitmentSigned, typeof(CommitmentSignedPayload));
 495        _messageTypeDictionary.Add(MessageTypes.Error, typeof(ErrorPayload));
 496        _messageTypeDictionary.Add(MessageTypes.FundingCreated, typeof(FundingCreatedPayload));
 497        _messageTypeDictionary.Add(MessageTypes.FundingSigned, typeof(FundingSignedPayload));
 498        _messageTypeDictionary.Add(MessageTypes.Init, typeof(InitPayload));
 499        _messageTypeDictionary.Add(MessageTypes.OpenChannel, typeof(OpenChannel1Payload));
 4100        _messageTypeDictionary.Add(MessageTypes.OpenChannel2, typeof(OpenChannel2Payload));
 4101        _messageTypeDictionary.Add(MessageTypes.Ping, typeof(PingPayload));
 4102        _messageTypeDictionary.Add(MessageTypes.Pong, typeof(PongPayload));
 4103        _messageTypeDictionary.Add(MessageTypes.RevokeAndAck, typeof(RevokeAndAckPayload));
 4104        _messageTypeDictionary.Add(MessageTypes.Shutdown, typeof(ShutdownPayload));
 4105        _messageTypeDictionary.Add(MessageTypes.Stfu, typeof(StfuPayload));
 4106        _messageTypeDictionary.Add(MessageTypes.TxAbort, typeof(TxAbortPayload));
 4107        _messageTypeDictionary.Add(MessageTypes.TxAckRbf, typeof(TxAckRbfPayload));
 4108        _messageTypeDictionary.Add(MessageTypes.TxAddInput, typeof(TxAddInputPayload));
 4109        _messageTypeDictionary.Add(MessageTypes.TxAddOutput, typeof(TxAddOutputPayload));
 4110        _messageTypeDictionary.Add(MessageTypes.TxComplete, typeof(TxCompletePayload));
 4111        _messageTypeDictionary.Add(MessageTypes.TxInitRbf, typeof(TxInitRbfPayload));
 4112        _messageTypeDictionary.Add(MessageTypes.TxRemoveInput, typeof(TxRemoveInputPayload));
 4113        _messageTypeDictionary.Add(MessageTypes.TxRemoveOutput, typeof(TxRemoveOutputPayload));
 4114        _messageTypeDictionary.Add(MessageTypes.TxSignatures, typeof(TxSignaturesPayload));
 4115        _messageTypeDictionary.Add(MessageTypes.UpdateAddHtlc, typeof(UpdateAddHtlcPayload));
 4116        _messageTypeDictionary.Add(MessageTypes.UpdateFailHtlc, typeof(UpdateFailHtlcPayload));
 4117        _messageTypeDictionary.Add(MessageTypes.UpdateFailMalformedHtlc, typeof(UpdateFailMalformedHtlcPayload));
 4118        _messageTypeDictionary.Add(MessageTypes.UpdateFee, typeof(UpdateFeePayload));
 4119        _messageTypeDictionary.Add(MessageTypes.UpdateFulfillHtlc, typeof(UpdateFulfillHtlcPayload));
 4120        _messageTypeDictionary.Add(MessageTypes.Warning, typeof(ErrorPayload));
 4121    }
 122}