< 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: 30_15166811759
Line coverage
0%
Covered lines: 0
Uncovered lines: 101
Coverable lines: 101
Total lines: 136
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
 1namespace NLightning.Infrastructure.Serialization.Factories;
 2
 3using Domain.Protocol.Constants;
 4using Domain.Protocol.Factories;
 5using Domain.Protocol.Messages;
 6using Domain.Protocol.Messages.Interfaces;
 7using Domain.Serialization.Factories;
 8using Domain.Serialization.Messages.Types;
 9using Interfaces;
 10using Messages.Types;
 11
 12public class MessageTypeSerializerFactory : IMessageTypeSerializerFactory
 13{
 014    private readonly Dictionary<Type, IMessageTypeSerializer> _serializers = new();
 015    private readonly Dictionary<ushort, Type> _ushortTypeDictionary = new();
 16    private readonly IPayloadSerializerFactory _payloadSerializerFactory;
 17    private readonly ITlvConverterFactory _tlvConverterFactory;
 18    private readonly ITlvStreamSerializer _tlvStreamSerializer;
 19
 020    public MessageTypeSerializerFactory(IPayloadSerializerFactory payloadSerializerFactory,
 021                                        ITlvConverterFactory tlvConverterFactory,
 022                                        ITlvStreamSerializer tlvStreamSerializer)
 23    {
 024        _payloadSerializerFactory = payloadSerializerFactory;
 025        _tlvConverterFactory = tlvConverterFactory;
 026        _tlvStreamSerializer = tlvStreamSerializer;
 27
 028        RegisterSerializers();
 029        RegisterTypeDictionary();
 030    }
 31
 32    public IMessageTypeSerializer<TMessageType>? GetSerializer<TMessageType>() where TMessageType : IMessage
 33    {
 034        return _serializers.GetValueOrDefault(typeof(TMessageType)) as IMessageTypeSerializer<TMessageType>;
 35    }
 36
 37    public IMessageTypeSerializer? GetSerializer(ushort messageType)
 38    {
 039        var type = _ushortTypeDictionary.GetValueOrDefault(messageType);
 040        if (type is null)
 041            return null;
 42
 043        return _serializers.GetValueOrDefault(type);
 44    }
 45
 46    private void RegisterSerializers()
 47    {
 048        _serializers.Add(typeof(AcceptChannel2Message),
 049                         new AcceptChannel2MessageTypeSerializer(_payloadSerializerFactory, _tlvConverterFactory,
 050                                                                 _tlvStreamSerializer));
 051        _serializers.Add(typeof(ChannelReadyMessage),
 052                         new ChannelReadyMessageTypeSerializer(_payloadSerializerFactory, _tlvConverterFactory,
 053                                                               _tlvStreamSerializer));
 054        _serializers.Add(typeof(ChannelReestablishMessage),
 055                         new ChannelReestablishMessageTypeSerializer(_payloadSerializerFactory,
 056                                                                     _tlvConverterFactory, _tlvStreamSerializer));
 057        _serializers.Add(typeof(ClosingSignedMessage),
 058                         new ClosingSignedMessageTypeSerializer(_payloadSerializerFactory, _tlvConverterFactory,
 059                                                                _tlvStreamSerializer));
 060        _serializers.Add(typeof(CommitmentSignedMessage),
 061                         new CommitmentSignedMessageTypeSerializer(_payloadSerializerFactory));
 062        _serializers.Add(typeof(ErrorMessage), new ErrorMessageTypeSerializer(_payloadSerializerFactory));
 063        _serializers.Add(typeof(InitMessage),
 064                         new InitMessageTypeSerializer(_payloadSerializerFactory, _tlvConverterFactory,
 065                                                       _tlvStreamSerializer));
 066        _serializers.Add(typeof(OpenChannel2Message),
 067                         new OpenChannel2MessageTypeSerializer(_payloadSerializerFactory, _tlvConverterFactory,
 068                                                               _tlvStreamSerializer));
 069        _serializers.Add(typeof(PingMessage), new PingMessageTypeSerializer(_payloadSerializerFactory));
 070        _serializers.Add(typeof(PongMessage), new PongMessageTypeSerializer(_payloadSerializerFactory));
 071        _serializers.Add(typeof(RevokeAndAckMessage),
 072                         new RevokeAndAckMessageTypeSerializer(_payloadSerializerFactory));
 073        _serializers.Add(typeof(ShutdownMessage), new ShutdownMessageTypeSerializer(_payloadSerializerFactory));
 074        _serializers.Add(typeof(StfuMessage), new StfuMessageTypeSerializer(_payloadSerializerFactory));
 075        _serializers.Add(typeof(TxAbortMessage), new TxAbortMessageTypeSerializer(_payloadSerializerFactory));
 076        _serializers.Add(typeof(TxAckRbfMessage),
 077                         new TxAckRbfMessageTypeSerializer(_payloadSerializerFactory, _tlvConverterFactory,
 078                                                           _tlvStreamSerializer));
 079        _serializers.Add(typeof(TxAddInputMessage), new TxAddInputMessageTypeSerializer(_payloadSerializerFactory));
 080        _serializers.Add(typeof(TxAddOutputMessage),
 081                         new TxAddOutputMessageTypeSerializer(_payloadSerializerFactory));
 082        _serializers.Add(typeof(TxCompleteMessage), new TxCompleteMessageTypeSerializer(_payloadSerializerFactory));
 083        _serializers.Add(typeof(TxInitRbfMessage),
 084                         new TxInitRbfMessageTypeSerializer(_payloadSerializerFactory, _tlvConverterFactory,
 085                                                            _tlvStreamSerializer));
 086        _serializers.Add(typeof(TxRemoveInputMessage),
 087                         new TxRemoveInputMessageTypeSerializer(_payloadSerializerFactory));
 088        _serializers.Add(typeof(TxRemoveOutputMessage),
 089                         new TxRemoveOutputMessageTypeSerializer(_payloadSerializerFactory));
 090        _serializers.Add(typeof(TxSignaturesMessage),
 091                         new TxSignaturesMessageTypeSerializer(_payloadSerializerFactory));
 092        _serializers.Add(typeof(UpdateAddHtlcMessage),
 093                         new UpdateAddHtlcMessageTypeSerializer(_payloadSerializerFactory,
 094                                                                           _tlvConverterFactory, _tlvStreamSerializer));
 095        _serializers.Add(typeof(UpdateFailHtlcMessage),
 096                         new UpdateFailHtlcMessageTypeSerializer(_payloadSerializerFactory));
 097        _serializers.Add(typeof(UpdateFailMalformedHtlcMessage),
 098                         new UpdateFailMalformedHtlcMessageTypeSerializer(_payloadSerializerFactory));
 099        _serializers.Add(typeof(UpdateFeeMessage), new UpdateFeeMessageTypeSerializer(_payloadSerializerFactory));
 0100        _serializers.Add(typeof(UpdateFulfillHtlcMessage),
 0101                         new UpdateFulfillHtlcMessageTypeSerializer(_payloadSerializerFactory));
 0102        _serializers.Add(typeof(WarningMessage), new WarningMessageTypeSerializer(_payloadSerializerFactory));
 0103    }
 104
 105    private void RegisterTypeDictionary()
 106    {
 0107        _ushortTypeDictionary.Add(MessageTypes.ACCEPT_CHANNEL_2, typeof(AcceptChannel2Message));
 0108        _ushortTypeDictionary.Add(MessageTypes.CHANNEL_READY, typeof(ChannelReadyMessage));
 0109        _ushortTypeDictionary.Add(MessageTypes.CHANNEL_REESTABLISH, typeof(ChannelReestablishMessage));
 0110        _ushortTypeDictionary.Add(MessageTypes.CLOSING_SIGNED, typeof(ClosingSignedMessage));
 0111        _ushortTypeDictionary.Add(MessageTypes.COMMITMENT_SIGNED, typeof(CommitmentSignedMessage));
 0112        _ushortTypeDictionary.Add(MessageTypes.ERROR, typeof(ErrorMessage));
 0113        _ushortTypeDictionary.Add(MessageTypes.INIT, typeof(InitMessage));
 0114        _ushortTypeDictionary.Add(MessageTypes.OPEN_CHANNEL_2, typeof(OpenChannel2Message));
 0115        _ushortTypeDictionary.Add(MessageTypes.PING, typeof(PingMessage));
 0116        _ushortTypeDictionary.Add(MessageTypes.PONG, typeof(PingMessage));
 0117        _ushortTypeDictionary.Add(MessageTypes.REVOKE_AND_ACK, typeof(RevokeAndAckMessage));
 0118        _ushortTypeDictionary.Add(MessageTypes.SHUTDOWN, typeof(ShutdownMessage));
 0119        _ushortTypeDictionary.Add(MessageTypes.STFU, typeof(StfuMessage));
 0120        _ushortTypeDictionary.Add(MessageTypes.TX_ABORT, typeof(TxAbortMessage));
 0121        _ushortTypeDictionary.Add(MessageTypes.TX_ACK_RBF, typeof(TxAckRbfMessage));
 0122        _ushortTypeDictionary.Add(MessageTypes.TX_ADD_INPUT, typeof(TxAddInputMessage));
 0123        _ushortTypeDictionary.Add(MessageTypes.TX_ADD_OUTPUT, typeof(TxAddOutputMessage));
 0124        _ushortTypeDictionary.Add(MessageTypes.TX_COMPLETE, typeof(TxCompleteMessage));
 0125        _ushortTypeDictionary.Add(MessageTypes.TX_INIT_RBF, typeof(TxInitRbfMessage));
 0126        _ushortTypeDictionary.Add(MessageTypes.TX_REMOVE_INPUT, typeof(TxRemoveInputMessage));
 0127        _ushortTypeDictionary.Add(MessageTypes.TX_REMOVE_OUTPUT, typeof(TxRemoveOutputMessage));
 0128        _ushortTypeDictionary.Add(MessageTypes.TX_SIGNATURES, typeof(TxSignaturesMessage));
 0129        _ushortTypeDictionary.Add(MessageTypes.UPDATE_ADD_HTLC, typeof(UpdateAddHtlcMessage));
 0130        _ushortTypeDictionary.Add(MessageTypes.UPDATE_FAIL_HTLC, typeof(UpdateFailHtlcMessage));
 0131        _ushortTypeDictionary.Add(MessageTypes.UPDATE_FAIL_MALFORMED_HTLC, typeof(UpdateFailMalformedHtlcMessage));
 0132        _ushortTypeDictionary.Add(MessageTypes.UPDATE_FEE, typeof(UpdateFeeMessage));
 0133        _ushortTypeDictionary.Add(MessageTypes.UPDATE_FULFILL_HTLC, typeof(UpdateFulfillHtlcMessage));
 0134        _ushortTypeDictionary.Add(MessageTypes.WARNING, typeof(WarningMessage));
 0135    }
 136}