diff --git a/Example.Backend/Program.cs b/Example.Backend/Program.cs index 5ef1be4..ae15222 100644 --- a/Example.Backend/Program.cs +++ b/Example.Backend/Program.cs @@ -26,7 +26,6 @@ class Program builder.Services.AddOptions(); var listening = new IPEndPoint(IPAddress.Any, 4567); builder.Services.Configure(options => options.Endpoint = listening); - builder.Services.Configure(o => o.DistributionType = EDistributionType.ExtractorFirst); builder.Services.AddSingleton(); builder.Services.AddSingleton(); diff --git a/mROA.Cbor/CborSerializationToolkit.cs b/mROA.Cbor/CborSerializationToolkit.cs index e779720..5df139b 100644 --- a/mROA.Cbor/CborSerializationToolkit.cs +++ b/mROA.Cbor/CborSerializationToolkit.cs @@ -89,8 +89,17 @@ namespace mROA.Cbor public object? Deserialize(ReadOnlyMemory rawMemory, Type type, IEndPointContext? context) { - var reader = new CborReader(rawMemory); - return ReadData(reader, type, context); + try + { + var reader = new CborReader(rawMemory); + return ReadData(reader, type, context); + } + catch (Exception e) + { + Console.WriteLine($"Bad deserialization. Bytes: {rawMemory.ToArray().Select(b => $"{b:X}")}"); + throw; + } + } public T Cast(object nonCasted, IEndPointContext? context) diff --git a/mROA/Implementation/Backend/HubRequestExtractor.cs b/mROA/Implementation/Backend/HubRequestExtractor.cs index 7d20a08..c4438ab 100644 --- a/mROA/Implementation/Backend/HubRequestExtractor.cs +++ b/mROA/Implementation/Backend/HubRequestExtractor.cs @@ -10,18 +10,17 @@ namespace mROA.Implementation.Backend private readonly IRealStoreInstanceRepository _contextRepository; private readonly IInstanceRepository _remoteContextRepository; private readonly IExecuteModule _executeModule; - private readonly IDistributionModule _distribution; + private readonly DistributionOptions _mode; private readonly Dictionary _producedExtractors = new(); public HubRequestExtractor(IRealStoreInstanceRepository contextRepository, IInstanceRepository remoteContextRepository, IExecuteModule executeModule, - IDistributionModule distribution) + IOptions mode) { _contextRepository = contextRepository; _remoteContextRepository = remoteContextRepository; _executeModule = executeModule; - _distribution = distribution; - + _mode = mode.Value; } public IRequestExtractor this[int id] => _producedExtractors[id]; @@ -29,7 +28,7 @@ namespace mROA.Implementation.Backend public IRequestExtractor HubOnOnConnected(IRepresentationModule representationModule) { var extractor = CreateExtractor(representationModule); - if (_distribution is ChannelDistributionModule) + if (_mode.DistributionType == EDistributionType.Channeled) { extractor.StartExtraction().ContinueWith(_ => OnDisconnected(representationModule)); } diff --git a/mROA/Implementation/DistributionOptions.cs b/mROA/Implementation/DistributionOptions.cs new file mode 100644 index 0000000..239dc23 --- /dev/null +++ b/mROA/Implementation/DistributionOptions.cs @@ -0,0 +1,13 @@ +namespace mROA.Implementation +{ + public class DistributionOptions + { + public EDistributionType DistributionType { get; set; } + } + + public enum EDistributionType + { + Channeled, + ExtractorFirst + } +} \ No newline at end of file