mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-17 01:33:03 +08:00
Add serializer adapter.
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
#if NETCOREAPP
|
||||
using System.Buffers;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using MQTTnet.AspNetCore;
|
||||
@@ -12,7 +13,7 @@ namespace MQTTnet.AspNetCore.Tests
|
||||
[TestMethod]
|
||||
public void TestTryDeserialize()
|
||||
{
|
||||
var serializer = new MqttPacketSerializer();
|
||||
var serializer = new MqttV311PacketSerializer();
|
||||
|
||||
var buffer = serializer.Serialize(new MqttPublishPacket() {Topic = "a", Payload = new byte[5]});
|
||||
|
||||
@@ -43,3 +44,4 @@ namespace MQTTnet.AspNetCore.Tests
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -26,7 +26,8 @@ namespace MQTTnet.Benchmarks
|
||||
.Build();
|
||||
|
||||
_packet = message.ToPublishPacket();
|
||||
var serializer = new MqttPacketSerializer();
|
||||
var serializer = new MqttPacketSerializerAdapter(MqttProtocolVersion.V311);
|
||||
|
||||
var serializedPacket = Join(serializer.Serialize(_packet));
|
||||
|
||||
_iterations = 10000;
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace MQTTnet.Benchmarks
|
||||
{
|
||||
private MqttBasePacket _packet;
|
||||
private ArraySegment<byte> _serializedPacket;
|
||||
private MqttPacketSerializer _serializer;
|
||||
private IMqttPacketSerializer _serializer;
|
||||
|
||||
[GlobalSetup]
|
||||
public void Setup()
|
||||
@@ -29,7 +29,7 @@ namespace MQTTnet.Benchmarks
|
||||
.Build();
|
||||
|
||||
_packet = message.ToPublishPacket();
|
||||
_serializer = new MqttPacketSerializer();
|
||||
_serializer = new MqttV311PacketSerializer();
|
||||
_serializedPacket = _serializer.Serialize(_packet);
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ using MQTTnet.Client;
|
||||
using MQTTnet.Diagnostics;
|
||||
using MQTTnet.Exceptions;
|
||||
using MQTTnet.Packets;
|
||||
using MQTTnet.Packets.V3;
|
||||
|
||||
namespace MQTTnet.Core.Tests
|
||||
{
|
||||
@@ -50,7 +51,7 @@ namespace MQTTnet.Core.Tests
|
||||
|
||||
Task.Run(async () => {
|
||||
var connect = await channel2.ReceivePacketAsync(TimeSpan.Zero, CancellationToken.None);
|
||||
await channel2.SendPacketAsync(new MqttConnAckPacket() { ConnectReturnCode = Protocol.MqttConnectReturnCode.ConnectionRefusedNotAuthorized }, CancellationToken.None);
|
||||
await channel2.SendPacketAsync(new MqttV3ConnAckPacket() { ConnectReturnCode = Protocol.MqttConnectReturnCode.ConnectionRefusedNotAuthorized }, CancellationToken.None);
|
||||
});
|
||||
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@ namespace MQTTnet.Core.Tests
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
public Task RunAsync(MqttConnectPacket connectPacket, IMqttChannelAdapter adapter)
|
||||
public Task RunAsync(MqttApplicationMessage willMessage, int keepAlivePeriod, IMqttChannelAdapter adapter)
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using MQTTnet.Adapter;
|
||||
using MQTTnet.Internal;
|
||||
using MQTTnet.Packets;
|
||||
using MQTTnet.Packets.V3;
|
||||
using MQTTnet.Protocol;
|
||||
using MQTTnet.Serializer;
|
||||
|
||||
@@ -18,7 +19,7 @@ namespace MQTTnet.Core.Tests
|
||||
[TestMethod]
|
||||
public void SerializeV310_MqttConnectPacket()
|
||||
{
|
||||
var p = new MqttConnectPacket
|
||||
var p = new MqttV3ConnectPacket
|
||||
{
|
||||
ClientId = "XYZ",
|
||||
Password = "PASS",
|
||||
@@ -33,7 +34,7 @@ namespace MQTTnet.Core.Tests
|
||||
[TestMethod]
|
||||
public void SerializeV311_MqttConnectPacket()
|
||||
{
|
||||
var p = new MqttConnectPacket
|
||||
var p = new MqttV3ConnectPacket
|
||||
{
|
||||
ClientId = "XYZ",
|
||||
Password = "PASS",
|
||||
@@ -48,7 +49,7 @@ namespace MQTTnet.Core.Tests
|
||||
[TestMethod]
|
||||
public void SerializeV311_MqttConnectPacketWithWillMessage()
|
||||
{
|
||||
var p = new MqttConnectPacket
|
||||
var p = new MqttV3ConnectPacket
|
||||
{
|
||||
ClientId = "XYZ",
|
||||
Password = "PASS",
|
||||
@@ -70,7 +71,7 @@ namespace MQTTnet.Core.Tests
|
||||
[TestMethod]
|
||||
public void DeserializeV311_MqttConnectPacket()
|
||||
{
|
||||
var p = new MqttConnectPacket
|
||||
var p = new MqttV3ConnectPacket
|
||||
{
|
||||
ClientId = "XYZ",
|
||||
Password = "PASS",
|
||||
@@ -85,7 +86,7 @@ namespace MQTTnet.Core.Tests
|
||||
[TestMethod]
|
||||
public void DeserializeV311_MqttConnectPacketWithWillMessage()
|
||||
{
|
||||
var p = new MqttConnectPacket
|
||||
var p = new MqttV3ConnectPacket
|
||||
{
|
||||
ClientId = "XYZ",
|
||||
Password = "PASS",
|
||||
@@ -107,7 +108,7 @@ namespace MQTTnet.Core.Tests
|
||||
[TestMethod]
|
||||
public void SerializeV311_MqttConnAckPacket()
|
||||
{
|
||||
var p = new MqttConnAckPacket
|
||||
var p = new MqttV3ConnAckPacket
|
||||
{
|
||||
IsSessionPresent = true,
|
||||
ConnectReturnCode = MqttConnectReturnCode.ConnectionRefusedNotAuthorized
|
||||
@@ -119,7 +120,7 @@ namespace MQTTnet.Core.Tests
|
||||
[TestMethod]
|
||||
public void SerializeV310_MqttConnAckPacket()
|
||||
{
|
||||
var p = new MqttConnAckPacket
|
||||
var p = new MqttV3ConnAckPacket
|
||||
{
|
||||
ConnectReturnCode = MqttConnectReturnCode.ConnectionRefusedNotAuthorized
|
||||
};
|
||||
@@ -130,7 +131,7 @@ namespace MQTTnet.Core.Tests
|
||||
[TestMethod]
|
||||
public void DeserializeV311_MqttConnAckPacket()
|
||||
{
|
||||
var p = new MqttConnAckPacket
|
||||
var p = new MqttV3ConnAckPacket
|
||||
{
|
||||
IsSessionPresent = true,
|
||||
ConnectReturnCode = MqttConnectReturnCode.ConnectionRefusedNotAuthorized
|
||||
@@ -142,7 +143,7 @@ namespace MQTTnet.Core.Tests
|
||||
[TestMethod]
|
||||
public void DeserializeV310_MqttConnAckPacket()
|
||||
{
|
||||
var p = new MqttConnAckPacket
|
||||
var p = new MqttV3ConnAckPacket
|
||||
{
|
||||
ConnectReturnCode = MqttConnectReturnCode.ConnectionRefusedNotAuthorized
|
||||
};
|
||||
@@ -153,7 +154,7 @@ namespace MQTTnet.Core.Tests
|
||||
[TestMethod]
|
||||
public void Serialize_LargePacket()
|
||||
{
|
||||
var serializer = new MqttPacketSerializer { ProtocolVersion = MqttProtocolVersion.V311 };
|
||||
var serializer = new MqttV311PacketSerializer();
|
||||
|
||||
const int payloadLength = 80000;
|
||||
|
||||
@@ -509,7 +510,20 @@ namespace MQTTnet.Core.Tests
|
||||
|
||||
private static void SerializeAndCompare(MqttBasePacket packet, string expectedBase64Value, MqttProtocolVersion protocolVersion = MqttProtocolVersion.V311)
|
||||
{
|
||||
var serializer = new MqttPacketSerializer { ProtocolVersion = protocolVersion };
|
||||
IMqttPacketSerializer serializer;
|
||||
if (protocolVersion == MqttProtocolVersion.V311)
|
||||
{
|
||||
serializer = new MqttV311PacketSerializer();
|
||||
}
|
||||
else if (protocolVersion == MqttProtocolVersion.V310)
|
||||
{
|
||||
serializer = new MqttV310PacketSerializer();
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
var data = serializer.Serialize(packet);
|
||||
|
||||
Assert.AreEqual(expectedBase64Value, Convert.ToBase64String(Join(data)));
|
||||
@@ -517,7 +531,19 @@ namespace MQTTnet.Core.Tests
|
||||
|
||||
private static void DeserializeAndCompare(MqttBasePacket packet, string expectedBase64Value, MqttProtocolVersion protocolVersion = MqttProtocolVersion.V311)
|
||||
{
|
||||
var serializer = new MqttPacketSerializer { ProtocolVersion = protocolVersion };
|
||||
IMqttPacketSerializer serializer;
|
||||
if (protocolVersion == MqttProtocolVersion.V311)
|
||||
{
|
||||
serializer = new MqttV311PacketSerializer();
|
||||
}
|
||||
else if (protocolVersion == MqttProtocolVersion.V310)
|
||||
{
|
||||
serializer = new MqttV310PacketSerializer();
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
var buffer1 = serializer.Serialize(packet);
|
||||
|
||||
@@ -541,7 +567,19 @@ namespace MQTTnet.Core.Tests
|
||||
private static T Roundtrip<T>(T packet, MqttProtocolVersion protocolVersion = MqttProtocolVersion.V311)
|
||||
where T : MqttBasePacket
|
||||
{
|
||||
var serializer = new MqttPacketSerializer { ProtocolVersion = protocolVersion };
|
||||
IMqttPacketSerializer serializer;
|
||||
if (protocolVersion == MqttProtocolVersion.V311)
|
||||
{
|
||||
serializer = new MqttV311PacketSerializer();
|
||||
}
|
||||
else if (protocolVersion == MqttProtocolVersion.V310)
|
||||
{
|
||||
serializer = new MqttV310PacketSerializer();
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
var buffer1 = serializer.Serialize(packet);
|
||||
|
||||
|
||||
@@ -171,14 +171,14 @@ namespace MQTTnet.Core.Tests
|
||||
[TestMethod]
|
||||
public async Task MqttServer_Publish_MultipleClients()
|
||||
{
|
||||
var serverAdapter = new MqttTcpServerAdapter(new MqttNetLogger().CreateChildLogger());
|
||||
var s = new MqttFactory().CreateMqttServer(new[] { serverAdapter }, new MqttNetLogger());
|
||||
var s = new MqttFactory().CreateMqttServer();
|
||||
var receivedMessagesCount = 0;
|
||||
var locked = new object();
|
||||
|
||||
var clientOptions = new MqttClientOptionsBuilder()
|
||||
.WithTcpServer("localhost")
|
||||
.Build();
|
||||
|
||||
var clientOptions2 = new MqttClientOptionsBuilder()
|
||||
.WithTcpServer("localhost")
|
||||
.Build();
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace MQTTnet.Core.Tests
|
||||
|
||||
public string Endpoint { get; }
|
||||
|
||||
public IMqttPacketSerializer PacketSerializer { get; } = new MqttPacketSerializer();
|
||||
public MqttPacketSerializerAdapter PacketSerializerAdapter { get; } = new MqttPacketSerializerAdapter(MqttProtocolVersion.V311);
|
||||
|
||||
public event EventHandler ReadingPacketStarted;
|
||||
public event EventHandler ReadingPacketCompleted;
|
||||
|
||||
@@ -14,6 +14,7 @@ using MQTTnet.Extensions.ManagedClient;
|
||||
using MQTTnet.Extensions.Rpc;
|
||||
using MQTTnet.Implementations;
|
||||
using MQTTnet.Protocol;
|
||||
using MQTTnet.Serializer;
|
||||
using MQTTnet.Server;
|
||||
using MqttClientConnectedEventArgs = MQTTnet.Client.MqttClientConnectedEventArgs;
|
||||
using MqttClientDisconnectedEventArgs = MQTTnet.Client.MqttClientDisconnectedEventArgs;
|
||||
@@ -87,7 +88,8 @@ namespace MQTTnet.TestApp.UniversalWindows
|
||||
|
||||
var options = new MqttClientOptions
|
||||
{
|
||||
ClientId = ClientId.Text
|
||||
ClientId = ClientId.Text,
|
||||
ProtocolVersion = MqttProtocolVersion.V500
|
||||
};
|
||||
|
||||
if (UseTcp.IsChecked == true)
|
||||
|
||||
Reference in New Issue
Block a user