< Summary - Combined Code Coverage

Information
Class: NLightning.Infrastructure.Serialization.Factories.MessageTypeSerializerFactory
Assembly: NLightning.Infrastructure.Serialization
File(s): /home/runner/work/nlightning/nlightning/src/NLightning.Infrastructure.Serialization/Factories/MessageTypeSerializerFactory.cs
Tag: 36_15743069263
Line coverage
0%
Covered lines: 0
Uncovered lines: 115
Coverable lines: 115
Total lines: 149
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
.ctor(...)100%210%
GetSerializer()100%210%
GetSerializer(...)0%620%
RegisterSerializers()100%210%
RegisterTypeDictionary()100%210%

File(s)

/home/runner/work/nlightning/nlightning/src/NLightning.Infrastructure.Serialization/Factories/MessageTypeSerializerFactory.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.Messages;
 8using Interfaces;
 9using Messages.Types;
 10
 11public class MessageTypeSerializerFactory : IMessageTypeSerializerFactory
 12{
 013    private readonly Dictionary<Type, IMessageTypeSerializer> _serializers = new();
 014    private readonly Dictionary<MessageTypes, Type> _messageTypeDictionary = new();
 15    private readonly IPayloadSerializerFactory _payloadSerializerFactory;
 16    private readonly ITlvConverterFactory _tlvConverterFactory;
 17    private readonly ITlvStreamSerializer _tlvStreamSerializer;
 18
 019    public MessageTypeSerializerFactory(IPayloadSerializerFactory payloadSerializerFactory,
 020                                        ITlvConverterFactory tlvConverterFactory,
 021                                        ITlvStreamSerializer tlvStreamSerializer)
 22    {
 023        _payloadSerializerFactory = payloadSerializerFactory;
 024        _tlvConverterFactory = tlvConverterFactory;
 025        _tlvStreamSerializer = tlvStreamSerializer;
 26
 027        RegisterSerializers();
 028        RegisterTypeDictionary();
 029    }
 30
 31    public IMessageTypeSerializer<TMessageType>? GetSerializer<TMessageType>() where TMessageType : IMessage
 32    {
 033        return _serializers.GetValueOrDefault(typeof(TMessageType)) as IMessageTypeSerializer<TMessageType>;
 34    }
 35
 36    public IMessageTypeSerializer? GetSerializer(MessageTypes messageType)
 37    {
 038        var type = _messageTypeDictionary.GetValueOrDefault(messageType);
 039        if (type is null)
 040            return null;
 41
 042        return _serializers.GetValueOrDefault(type);
 43    }
 44
 45    private void RegisterSerializers()
 46    {
 047        _serializers.Add(typeof(AcceptChannel1Message),
 048                         new AcceptChannel1MessageTypeSerializer(_payloadSerializerFactory, _tlvConverterFactory,
 049                                                                 _tlvStreamSerializer));
 050        _serializers.Add(typeof(AcceptChannel2Message),
 051                         new AcceptChannel2MessageTypeSerializer(_payloadSerializerFactory, _tlvConverterFactory,
 052                                                                 _tlvStreamSerializer));
 053        _serializers.Add(typeof(ChannelReadyMessage),
 054                         new ChannelReadyMessageTypeSerializer(_payloadSerializerFactory, _tlvConverterFactory,
 055                                                               _tlvStreamSerializer));
 056        _serializers.Add(typeof(ChannelReestablishMessage),
 057                         new ChannelReestablishMessageTypeSerializer(_payloadSerializerFactory,
 058                                                                     _tlvConverterFactory, _tlvStreamSerializer));
 059        _serializers.Add(typeof(ClosingSignedMessage),
 060                         new ClosingSignedMessageTypeSerializer(_payloadSerializerFactory, _tlvConverterFactory,
 061                                                                _tlvStreamSerializer));
 062        _serializers.Add(typeof(CommitmentSignedMessage),
 063                         new CommitmentSignedMessageTypeSerializer(_payloadSerializerFactory));
 064        _serializers.Add(typeof(ErrorMessage), new ErrorMessageTypeSerializer(_payloadSerializerFactory));
 065        _serializers.Add(typeof(FundingCreatedMessage),
 066                         new FundingCreatedMessageTypeSerializer(_payloadSerializerFactory));
 067        _serializers.Add(typeof(FundingSignedMessage),
 068                         new FundingSignedMessageTypeSerializer(_payloadSerializerFactory));
 069        _serializers.Add(typeof(InitMessage),
 070                         new InitMessageTypeSerializer(_payloadSerializerFactory, _tlvConverterFactory,
 071                                                       _tlvStreamSerializer));
 072        _serializers.Add(typeof(OpenChannel1Message),
 073                         new OpenChannel1MessageTypeSerializer(_payloadSerializerFactory, _tlvConverterFactory,
 074                                                               _tlvStreamSerializer));
 075        _serializers.Add(typeof(OpenChannel2Message),
 076                         new OpenChannel2MessageTypeSerializer(_payloadSerializerFactory, _tlvConverterFactory,
 077                                                               _tlvStreamSerializer));
 078        _serializers.Add(typeof(PingMessage), new PingMessageTypeSerializer(_payloadSerializerFactory));
 079        _serializers.Add(typeof(PongMessage), new PongMessageTypeSerializer(_payloadSerializerFactory));
 080        _serializers.Add(typeof(RevokeAndAckMessage),
 081                         new RevokeAndAckMessageTypeSerializer(_payloadSerializerFactory));
 082        _serializers.Add(typeof(ShutdownMessage), new ShutdownMessageTypeSerializer(_payloadSerializerFactory));
 083        _serializers.Add(typeof(StfuMessage), new StfuMessageTypeSerializer(_payloadSerializerFactory));
 084        _serializers.Add(typeof(TxAbortMessage), new TxAbortMessageTypeSerializer(_payloadSerializerFactory));
 085        _serializers.Add(typeof(TxAckRbfMessage),
 086                         new TxAckRbfMessageTypeSerializer(_payloadSerializerFactory, _tlvConverterFactory,
 087                                                           _tlvStreamSerializer));
 088        _serializers.Add(typeof(TxAddInputMessage), new TxAddInputMessageTypeSerializer(_payloadSerializerFactory));
 089        _serializers.Add(typeof(TxAddOutputMessage),
 090                         new TxAddOutputMessageTypeSerializer(_payloadSerializerFactory));
 091        _serializers.Add(typeof(TxCompleteMessage), new TxCompleteMessageTypeSerializer(_payloadSerializerFactory));
 092        _serializers.Add(typeof(TxInitRbfMessage),
 093                         new TxInitRbfMessageTypeSerializer(_payloadSerializerFactory, _tlvConverterFactory,
 094                                                            _tlvStreamSerializer));
 095        _serializers.Add(typeof(TxRemoveInputMessage),
 096                         new TxRemoveInputMessageTypeSerializer(_payloadSerializerFactory));
 097        _serializers.Add(typeof(TxRemoveOutputMessage),
 098                         new TxRemoveOutputMessageTypeSerializer(_payloadSerializerFactory));
 099        _serializers.Add(typeof(TxSignaturesMessage),
 0100                         new TxSignaturesMessageTypeSerializer(_payloadSerializerFactory));
 0101        _serializers.Add(typeof(UpdateAddHtlcMessage),
 0102                         new UpdateAddHtlcMessageTypeSerializer(_payloadSerializerFactory,
 0103                                                                _tlvConverterFactory, _tlvStreamSerializer));
 0104        _serializers.Add(typeof(UpdateFailHtlcMessage),
 0105                         new UpdateFailHtlcMessageTypeSerializer(_payloadSerializerFactory));
 0106        _serializers.Add(typeof(UpdateFailMalformedHtlcMessage),
 0107                         new UpdateFailMalformedHtlcMessageTypeSerializer(_payloadSerializerFactory));
 0108        _serializers.Add(typeof(UpdateFeeMessage), new UpdateFeeMessageTypeSerializer(_payloadSerializerFactory));
 0109        _serializers.Add(typeof(UpdateFulfillHtlcMessage),
 0110                         new UpdateFulfillHtlcMessageTypeSerializer(_payloadSerializerFactory));
 0111        _serializers.Add(typeof(WarningMessage), new WarningMessageTypeSerializer(_payloadSerializerFactory));
 0112    }
 113
 114    private void RegisterTypeDictionary()
 115    {
 0116        _messageTypeDictionary.Add(MessageTypes.AcceptChannel, typeof(AcceptChannel1Message));
 0117        _messageTypeDictionary.Add(MessageTypes.AcceptChannel2, typeof(AcceptChannel2Message));
 0118        _messageTypeDictionary.Add(MessageTypes.ChannelReady, typeof(ChannelReadyMessage));
 0119        _messageTypeDictionary.Add(MessageTypes.ChannelReestablish, typeof(ChannelReestablishMessage));
 0120        _messageTypeDictionary.Add(MessageTypes.ClosingSigned, typeof(ClosingSignedMessage));
 0121        _messageTypeDictionary.Add(MessageTypes.CommitmentSigned, typeof(CommitmentSignedMessage));
 0122        _messageTypeDictionary.Add(MessageTypes.Error, typeof(ErrorMessage));
 0123        _messageTypeDictionary.Add(MessageTypes.FundingCreated, typeof(FundingCreatedMessage));
 0124        _messageTypeDictionary.Add(MessageTypes.FundingSigned, typeof(FundingSignedMessage));
 0125        _messageTypeDictionary.Add(MessageTypes.Init, typeof(InitMessage));
 0126        _messageTypeDictionary.Add(MessageTypes.OpenChannel, typeof(OpenChannel1Message));
 0127        _messageTypeDictionary.Add(MessageTypes.OpenChannel2, typeof(OpenChannel2Message));
 0128        _messageTypeDictionary.Add(MessageTypes.Ping, typeof(PingMessage));
 0129        _messageTypeDictionary.Add(MessageTypes.Pong, typeof(PingMessage));
 0130        _messageTypeDictionary.Add(MessageTypes.RevokeAndAck, typeof(RevokeAndAckMessage));
 0131        _messageTypeDictionary.Add(MessageTypes.Shutdown, typeof(ShutdownMessage));
 0132        _messageTypeDictionary.Add(MessageTypes.Stfu, typeof(StfuMessage));
 0133        _messageTypeDictionary.Add(MessageTypes.TxAbort, typeof(TxAbortMessage));
 0134        _messageTypeDictionary.Add(MessageTypes.TxAckRbf, typeof(TxAckRbfMessage));
 0135        _messageTypeDictionary.Add(MessageTypes.TxAddInput, typeof(TxAddInputMessage));
 0136        _messageTypeDictionary.Add(MessageTypes.TxAddOutput, typeof(TxAddOutputMessage));
 0137        _messageTypeDictionary.Add(MessageTypes.TxComplete, typeof(TxCompleteMessage));
 0138        _messageTypeDictionary.Add(MessageTypes.TxInitRbf, typeof(TxInitRbfMessage));
 0139        _messageTypeDictionary.Add(MessageTypes.TxRemoveInput, typeof(TxRemoveInputMessage));
 0140        _messageTypeDictionary.Add(MessageTypes.TxRemoveOutput, typeof(TxRemoveOutputMessage));
 0141        _messageTypeDictionary.Add(MessageTypes.TxSignatures, typeof(TxSignaturesMessage));
 0142        _messageTypeDictionary.Add(MessageTypes.UpdateAddHtlc, typeof(UpdateAddHtlcMessage));
 0143        _messageTypeDictionary.Add(MessageTypes.UpdateFailHtlc, typeof(UpdateFailHtlcMessage));
 0144        _messageTypeDictionary.Add(MessageTypes.UpdateFailMalformedHtlc, typeof(UpdateFailMalformedHtlcMessage));
 0145        _messageTypeDictionary.Add(MessageTypes.UpdateFee, typeof(UpdateFeeMessage));
 0146        _messageTypeDictionary.Add(MessageTypes.UpdateFulfillHtlc, typeof(UpdateFulfillHtlcMessage));
 0147        _messageTypeDictionary.Add(MessageTypes.Warning, typeof(WarningMessage));
 0148    }
 149}