mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-25 23:53:07 +08:00
fixed tests and added testcase for user property serialization
This commit is contained in:
@@ -51,6 +51,11 @@ namespace MQTTnet.AspNetCore
|
||||
public unsafe string ReadStringWithLengthPrefix()
|
||||
{
|
||||
var buffer = ReadSegmentWithLengthPrefix();
|
||||
if (buffer.Length == 0)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
fixed (byte* bytes = &buffer.GetPinnableReference())
|
||||
{
|
||||
var result = Encoding.UTF8.GetString(bytes, buffer.Length);
|
||||
|
||||
@@ -60,12 +60,11 @@ namespace MQTTnet.AspNetCore
|
||||
|
||||
public void Write(IMqttPacketWriter propertyWriter)
|
||||
{
|
||||
if (propertyWriter is SpanBasedMqttPacketWriter writer)
|
||||
{
|
||||
GrowIfNeeded(1);
|
||||
}
|
||||
if (propertyWriter == null) throw new ArgumentNullException(nameof(propertyWriter));
|
||||
|
||||
throw new InvalidOperationException($"{nameof(propertyWriter)} must be of type {typeof(SpanBasedMqttPacketWriter).Name}");
|
||||
GrowIfNeeded(propertyWriter.Length);
|
||||
Write(propertyWriter.GetBuffer(), 0, propertyWriter.Length);
|
||||
Commit(propertyWriter.Length);
|
||||
}
|
||||
|
||||
public void Write(byte[] payload, int start, int length)
|
||||
|
||||
@@ -89,28 +89,30 @@ namespace MQTTnet.Formatter
|
||||
}
|
||||
|
||||
ProtocolVersion = protocolVersion;
|
||||
_formatter = GetMqttPacketFormatter(protocolVersion, Writer);
|
||||
}
|
||||
|
||||
public static IMqttPacketFormatter GetMqttPacketFormatter(MqttProtocolVersion protocolVersion, IMqttPacketWriter writer)
|
||||
{
|
||||
if (protocolVersion == MqttProtocolVersion.Unknown)
|
||||
{
|
||||
throw new InvalidOperationException("MQTT protocol version is invalid.");
|
||||
}
|
||||
|
||||
switch (protocolVersion)
|
||||
{
|
||||
case MqttProtocolVersion.V500:
|
||||
{
|
||||
_formatter = new MqttV500PacketFormatter(Writer);
|
||||
break;
|
||||
return new MqttV500PacketFormatter(writer);
|
||||
}
|
||||
|
||||
case MqttProtocolVersion.V311:
|
||||
{
|
||||
_formatter = new MqttV311PacketFormatter(Writer);
|
||||
break;
|
||||
return new MqttV311PacketFormatter(writer);
|
||||
}
|
||||
|
||||
case MqttProtocolVersion.V310:
|
||||
{
|
||||
|
||||
_formatter = new MqttV310PacketFormatter(Writer);
|
||||
break;
|
||||
return new MqttV310PacketFormatter(writer);
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
|
||||
@@ -154,6 +154,7 @@ namespace MQTTnet.Formatter
|
||||
}
|
||||
|
||||
Write(writer._buffer, 0, writer.Length);
|
||||
return;
|
||||
}
|
||||
|
||||
throw new InvalidOperationException($"{nameof(propertyWriter)} must be of type {typeof(MqttPacketWriter).Name}");
|
||||
|
||||
Reference in New Issue
Block a user