Refactor property definition for packets.

This commit is contained in:
Christian Kratky
2018-11-23 22:50:44 +01:00
parent 7292cedd2f
commit 7baff7c080
90 changed files with 962 additions and 985 deletions
@@ -17,7 +17,7 @@ namespace MQTTnet.AspNetCore.Tests
[TestMethod]
public async Task TestReceivePacketAsyncThrowsWhenReaderCompleted()
{
var serializer = new MqttPacketSerializerAdapter(MqttProtocolVersion.V311);
var serializer = new MqttPacketFormatterAdapter(MqttProtocolVersion.V311);
var pipe = new DuplexPipeMockup();
var connection = new DefaultConnectionContext();
connection.Transport = pipe;
@@ -31,7 +31,7 @@ namespace MQTTnet.AspNetCore.Tests
[TestMethod]
public async Task TestParallelWrites()
{
var serializer = new MqttPacketSerializerAdapter(MqttProtocolVersion.V311);
var serializer = new MqttPacketFormatterAdapter(MqttProtocolVersion.V311);
var pipe = new DuplexPipeMockup();
var connection = new DefaultConnectionContext();
connection.Transport = pipe;
@@ -2,6 +2,7 @@
using System.Buffers;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.AspNetCore;
using MQTTnet.Formatter;
using MQTTnet.Formatter.V311;
using MQTTnet.Packets;
@@ -13,7 +14,7 @@ namespace MQTTnet.AspNetCore.Tests
[TestMethod]
public void TestTryDeserialize()
{
var serializer = new MqttV311PacketFormatter();
var serializer = new MqttPacketFormatterAdapter(MqttProtocolVersion.V311);
var buffer = serializer.Encode(new MqttPublishPacket() {Topic = "a", Payload = new byte[5]});
@@ -26,20 +27,20 @@ namespace MQTTnet.AspNetCore.Tests
var result = false;
part = sequence.Slice(sequence.Start, 0); // empty message should fail
result = serializer.TryDeserialize(part, out packet, out consumed, out observed);
result = serializer.TryDecode(part, out packet, out consumed, out observed);
Assert.IsFalse(result);
part = sequence.Slice(sequence.Start, 1); // partial fixed header should fail
result = serializer.TryDeserialize(part, out packet, out consumed, out observed);
result = serializer.TryDecode(part, out packet, out consumed, out observed);
Assert.IsFalse(result);
part = sequence.Slice(sequence.Start, 4); // partial body should fail
result = serializer.TryDeserialize(part, out packet, out consumed, out observed);
result = serializer.TryDecode(part, out packet, out consumed, out observed);
Assert.IsFalse(result);
part = sequence; // complete msg should work
result = serializer.TryDeserialize(part, out packet, out consumed, out observed);
result = serializer.TryDecode(part, out packet, out consumed, out observed);
Assert.IsTrue(result);
}
}
@@ -21,12 +21,12 @@ namespace MQTTnet.Benchmarks
[GlobalSetup]
public void Setup()
{
var message = new MqttApplicationMessageBuilder()
.WithTopic("A")
.Build();
_packet = new MqttPublishPacket
{
Topic = "A"
};
_packet = message.ToPublishPacket();
var serializer = new MqttPacketSerializerAdapter(MqttProtocolVersion.V311);
var serializer = new MqttPacketFormatterAdapter(MqttProtocolVersion.V311);
var serializedPacket = Join(serializer.Encode(_packet));
@@ -8,9 +8,9 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="BenchmarkDotNet" Version="0.11.1" />
<PackageReference Include="BenchmarkDotNet" Version="0.11.3" />
<PackageReference Include="System.IO.Pipelines" Version="4.5.2" />
<PackageReference Include="Microsoft.AspNetCore" Version="2.1.4" />
<PackageReference Include="Microsoft.AspNetCore" Version="2.1.6" />
</ItemGroup>
<ItemGroup>
@@ -1,6 +1,5 @@
using BenchmarkDotNet.Attributes;
using MQTTnet.Packets;
using MQTTnet.Internal;
using System;
using System.Threading;
using System.Threading.Tasks;
@@ -23,11 +22,11 @@ namespace MQTTnet.Benchmarks
[GlobalSetup]
public void Setup()
{
var message = new MqttApplicationMessageBuilder()
.WithTopic("A")
.Build();
_packet = new MqttPublishPacket
{
Topic = "A"
};
_packet = message.ToPublishPacket();
_serializer = new MqttV311PacketFormatter();
_serializedPacket = _serializer.Encode(_packet);
}
@@ -47,17 +46,17 @@ namespace MQTTnet.Benchmarks
{
var channel = new BenchmarkMqttChannel(_serializedPacket);
var fixedHeader = new byte[2];
var singleByteBuffer = new byte[1];
var reader = new MqttPacketReader(channel);
for (var i = 0; i < 10000; i++)
{
channel.Reset();
var header = MqttPacketReader.ReadFixedHeaderAsync(channel, fixedHeader, singleByteBuffer, CancellationToken.None).GetAwaiter().GetResult();
var header = reader.ReadFixedHeaderAsync(fixedHeader, CancellationToken.None).GetAwaiter().GetResult();
var receivedPacket = new ReceivedMqttPacket(
header.Flags,
new MqttPacketBodyReader(_serializedPacket.Array, _serializedPacket.Count - header.RemainingLength, _serializedPacket.Array.Length));
new MqttPacketBodyReader(_serializedPacket.Array, (ulong)(_serializedPacket.Count - header.RemainingLength), (ulong)_serializedPacket.Array.Length));
_serializer.Decode(receivedPacket);
}
@@ -67,7 +67,7 @@ namespace MQTTnet.Core.Tests
throw new NotSupportedException();
}
public void EnqueueApplicationMessage(MqttClientSession senderClientSession, MqttPublishPacket publishPacket)
public void EnqueueApplicationMessage(MqttClientSession senderClientSession, MqttApplicationMessage applicationMessage)
{
throw new NotSupportedException();
}
@@ -15,8 +15,8 @@ namespace MQTTnet.Core.Tests
public void MqttPacketReader_EmptyStream()
{
var fixedHeader = new byte[2];
var singleByteBuffer = new byte[1];
MqttPacketReader.ReadFixedHeaderAsync(new TestMqttChannel(new MemoryStream()), fixedHeader, singleByteBuffer, CancellationToken.None).GetAwaiter().GetResult();
var reader = new MqttPacketReader(new TestMqttChannel(new MemoryStream()));
reader.ReadFixedHeaderAsync(fixedHeader, CancellationToken.None).GetAwaiter().GetResult();
}
}
}
@@ -181,17 +181,15 @@ namespace MQTTnet.Core.Tests
var buffer = serializer.Encode(publishPacket);
var testChannel = new TestMqttChannel(new MemoryStream(buffer.Array, buffer.Offset, buffer.Count));
var header = MqttPacketReader.ReadFixedHeaderAsync(
testChannel,
var header = new MqttPacketReader(testChannel).ReadFixedHeaderAsync(
new byte[2],
new byte[1],
CancellationToken.None).GetAwaiter().GetResult();
var eof = buffer.Offset + buffer.Count;
var receivedPacket = new ReceivedMqttPacket(
header.Flags,
new MqttPacketBodyReader(buffer.Array, eof - header.RemainingLength, buffer.Count + buffer.Offset));
new MqttPacketBodyReader(buffer.Array, (uint)eof - header.RemainingLength, (uint)(buffer.Count + buffer.Offset)));
var packet = (MqttPublishPacket)serializer.Decode(receivedPacket);
@@ -552,10 +550,9 @@ namespace MQTTnet.Core.Tests
{
var channel = new TestMqttChannel(headerStream);
var fixedHeader = new byte[2];
var singleByteBuffer = new byte[1];
var header = MqttPacketReader.ReadFixedHeaderAsync(channel, fixedHeader, singleByteBuffer, CancellationToken.None).GetAwaiter().GetResult();
var header = new MqttPacketReader(channel).ReadFixedHeaderAsync(fixedHeader, CancellationToken.None).GetAwaiter().GetResult();
using (var bodyStream = new MemoryStream(Join(buffer1), (int)headerStream.Position, header.RemainingLength))
using (var bodyStream = new MemoryStream(Join(buffer1), (int)headerStream.Position, (int)header.RemainingLength))
{
var deserializedPacket = serializer.Decode(new ReceivedMqttPacket(header.Flags, new MqttPacketBodyReader(bodyStream.ToArray(), 0, (int)bodyStream.Length)));
var buffer2 = serializer.Encode(deserializedPacket);
@@ -588,11 +585,10 @@ namespace MQTTnet.Core.Tests
{
var channel = new TestMqttChannel(headerStream);
var fixedHeader = new byte[2];
var singleByteBuffer = new byte[1];
var header = MqttPacketReader.ReadFixedHeaderAsync(channel, fixedHeader, singleByteBuffer, CancellationToken.None).GetAwaiter().GetResult();
var header = new MqttPacketReader(channel).ReadFixedHeaderAsync(fixedHeader, CancellationToken.None).GetAwaiter().GetResult();
using (var bodyStream = new MemoryStream(Join(buffer1), (int)headerStream.Position, header.RemainingLength))
using (var bodyStream = new MemoryStream(Join(buffer1), (int)headerStream.Position, (int)header.RemainingLength))
{
return (T)serializer.Decode(new ReceivedMqttPacket(header.Flags, new MqttPacketBodyReader(bodyStream.ToArray(), 0, (int)bodyStream.Length)));
}
@@ -16,7 +16,7 @@ namespace MQTTnet.Core.Tests
public string Endpoint { get; }
public MqttPacketSerializerAdapter PacketSerializerAdapter { get; } = new MqttPacketSerializerAdapter(MqttProtocolVersion.V311);
public MqttPacketFormatterAdapter PacketFormatterAdapter { get; } = new MqttPacketFormatterAdapter(MqttProtocolVersion.V311);
public event EventHandler ReadingPacketStarted;
public event EventHandler ReadingPacketCompleted;
@@ -10,8 +10,8 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore" Version="2.1.4" />
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.5" />
<PackageReference Include="Microsoft.AspNetCore" Version="2.1.6" />
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.6" />
<PackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="2.1.3" />
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.1.1" />
</ItemGroup>
@@ -142,10 +142,10 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform">
<Version>6.1.9</Version>
<Version>6.2.2</Version>
</PackageReference>
<PackageReference Include="Microsoft.Toolkit.Uwp.UI.Controls">
<Version>4.0.0</Version>
<Version>5.0.0</Version>
</PackageReference>
</ItemGroup>
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' ">