diff --git a/mROA.Benchmark/CborExtensions.cs b/mROA.Benchmark/CborExtensions.cs new file mode 100644 index 0000000..6f5150b --- /dev/null +++ b/mROA.Benchmark/CborExtensions.cs @@ -0,0 +1,35 @@ +using System.Formats.Cbor; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using mROA.Implementation; + +public static class CborExtensions +{ + public static unsafe void WriteToCbor(this RequestId id, CborWriter writer) + { + Span span = stackalloc byte[16]; + MemoryMarshal.Write(span, ref id); + writer.WriteByteString(span); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static unsafe void WriteToCborInline(this RequestId id, CborWriter writer) + { + Span span = stackalloc byte[16]; + MemoryMarshal.Write(span, ref id); + writer.WriteByteString(span); + } + + public static void WriteToDest(this RequestId id, Span destination) + { + MemoryMarshal.Write(destination, ref id); + } + + [MethodImpl(MethodImplOptions.AggressiveOptimization)] + public static unsafe void WriteToCborOpt(this RequestId id, CborWriter writer) + { + Span span = stackalloc byte[16]; + MemoryMarshal.Write(span, ref id); + writer.WriteByteString(span); + } +} \ No newline at end of file diff --git a/mROA.Benchmark/Program.cs b/mROA.Benchmark/Program.cs index 2f65d73..560812c 100644 --- a/mROA.Benchmark/Program.cs +++ b/mROA.Benchmark/Program.cs @@ -1,44 +1,8 @@ // See https://aka.ms/new-console-template for more information -using System.Formats.Cbor; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; using BenchmarkDotNet.Running; using mROA.Benchmark; -using mROA.Implementation; Console.WriteLine("Hello, World!"); -var test = new CborTest(); -test.ArrayWrite(); -BenchmarkRunner.Run(); -public static class CborExtensions -{ - public static unsafe void WriteToCbor(this RequestId id, CborWriter writer) - { - Span span = stackalloc byte[16]; - MemoryMarshal.Write(span, ref id); - writer.WriteByteString(span); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static unsafe void WriteToCborInline(this RequestId id, CborWriter writer) - { - Span span = stackalloc byte[16]; - MemoryMarshal.Write(span, ref id); - writer.WriteByteString(span); - } - - public static void WriteToDest(this RequestId id, Span destination) - { - MemoryMarshal.Write(destination, ref id); - } - - [MethodImpl(MethodImplOptions.AggressiveOptimization)] - public static unsafe void WriteToCborOpt(this RequestId id, CborWriter writer) - { - Span span = stackalloc byte[16]; - MemoryMarshal.Write(span, ref id); - writer.WriteByteString(span); - } -} \ No newline at end of file +BenchmarkRunner.Run(); \ No newline at end of file diff --git a/mROA/Implementation/Backend/HubRequestExtractor.cs b/mROA/Implementation/Backend/HubRequestExtractor.cs index a7f27f5..c4438ab 100644 --- a/mROA/Implementation/Backend/HubRequestExtractor.cs +++ b/mROA/Implementation/Backend/HubRequestExtractor.cs @@ -25,15 +25,15 @@ namespace mROA.Implementation.Backend public IRequestExtractor this[int id] => _producedExtractors[id]; - public IRequestExtractor HubOnOnConnected(IRepresentationModule interaction) + public IRequestExtractor HubOnOnConnected(IRepresentationModule representationModule) { - var extractor = CreateExtractor(interaction); + var extractor = CreateExtractor(representationModule); if (_mode.DistributionType == EDistributionType.Channeled) { - extractor.StartExtraction().ContinueWith(_ => OnDisconnected(interaction)); + extractor.StartExtraction().ContinueWith(_ => OnDisconnected(representationModule)); } - _producedExtractors[interaction.Id] = extractor; + _producedExtractors[representationModule.Id] = extractor; return extractor; } diff --git a/mROA/Implementation/Backend/NetworkGatewayModule.cs b/mROA/Implementation/Backend/NetworkGatewayModule.cs index f14f19f..27d62a0 100644 --- a/mROA/Implementation/Backend/NetworkGatewayModule.cs +++ b/mROA/Implementation/Backend/NetworkGatewayModule.cs @@ -106,7 +106,7 @@ namespace mROA.Implementation.Backend _extractorsTokenSources[interaction.ConnectionId] = cts; _hub.RegisterInteraction(interaction); - var requestExtractor = _hre.HubOnOnConnected(new RepresentationModule(interaction, _serialization)); + var requestExtractor = _hre.HubOnOnConnected(new RepresentationModule(interaction, _serialization.Clone())); if (_distribution.DistributionType != EDistributionType.Channeled) { diff --git a/mROA/Implementation/CreativeRepresentationModuleProducer.cs b/mROA/Implementation/CreativeRepresentationModuleProducer.cs index 44204ae..72be897 100644 --- a/mROA/Implementation/CreativeRepresentationModuleProducer.cs +++ b/mROA/Implementation/CreativeRepresentationModuleProducer.cs @@ -17,7 +17,7 @@ namespace mROA.Implementation { var interaction = _hub.GetInteraction(id); - var produced = new RepresentationModule(interaction, _serialization); + var produced = new RepresentationModule(interaction, _serialization.Clone()); return produced; }