| | 1 | | using NLightning.Domain.Bitcoin.ValueObjects; |
| | 2 | | using NLightning.Domain.Interfaces; |
| | 3 | | using NLightning.Domain.Serialization.Interfaces; |
| | 4 | |
|
| | 5 | | namespace NLightning.Infrastructure.Serialization.Factories; |
| | 6 | |
|
| | 7 | | using Domain.Channels.ValueObjects; |
| | 8 | | using Domain.Protocol.ValueObjects; |
| | 9 | | using ValueObjects; |
| | 10 | |
|
| | 11 | | public class ValueObjectSerializerFactory : IValueObjectSerializerFactory |
| | 12 | | { |
| 16 | 13 | | private readonly Dictionary<Type, IValueObjectTypeSerializer> _serializers = new(); |
| | 14 | |
|
| 16 | 15 | | public ValueObjectSerializerFactory() |
| | 16 | | { |
| 16 | 17 | | RegisterSerializers(); |
| 16 | 18 | | } |
| | 19 | |
|
| | 20 | | public IValueObjectTypeSerializer<TValueObjectType>? GetSerializer<TValueObjectType>() |
| | 21 | | where TValueObjectType : IValueObject |
| | 22 | | { |
| 364 | 23 | | return _serializers.GetValueOrDefault(typeof(TValueObjectType)) as IValueObjectTypeSerializer<TValueObjectType>; |
| | 24 | | } |
| | 25 | |
|
| | 26 | | private void RegisterSerializers() |
| | 27 | | { |
| 16 | 28 | | _serializers.Add(typeof(BigSize), new BigSizeTypeSerializer()); |
| 16 | 29 | | _serializers.Add(typeof(ChainHash), new ChainHashTypeSerializer()); |
| 16 | 30 | | _serializers.Add(typeof(ChannelFlags), new ChannelFlagTypeSerializer()); |
| 16 | 31 | | _serializers.Add(typeof(ChannelId), new ChannelIdTypeSerializer()); |
| 16 | 32 | | _serializers.Add(typeof(ShortChannelId), new ShortChannelIdTypeSerializer()); |
| 16 | 33 | | _serializers.Add(typeof(Witness), new WitnessTypeSerializer()); |
| 16 | 34 | | } |
| | 35 | | } |