Fix parsing error of AUTH packet with empty body (#2070)

* Reformat code

* Fix issue

* Fix AUTH packet serialization
This commit is contained in:
Christian
2024-09-07 09:49:10 +02:00
committed by GitHub
parent c4eb05105b
commit 2fdbb02dc8
5 changed files with 874 additions and 919 deletions
@@ -6,60 +6,59 @@ using MQTTnet.Formatter;
using MQTTnet.Packets;
using MQTTnet.Tests.Mockups;
namespace MQTTnet.Tests
namespace MQTTnet.Tests;
public sealed class MqttPacketSerializationHelper : IDisposable
{
public sealed class MqttPacketSerializationHelper : IDisposable
readonly IMqttPacketFormatter _packetFormatter;
readonly MqttProtocolVersion _protocolVersion;
public MqttPacketSerializationHelper(MqttProtocolVersion protocolVersion = MqttProtocolVersion.V311, MqttBufferWriter bufferWriter = null)
{
readonly IMqttPacketFormatter _packetFormatter;
readonly MqttProtocolVersion _protocolVersion;
_protocolVersion = protocolVersion;
public MqttPacketSerializationHelper(MqttProtocolVersion protocolVersion = MqttProtocolVersion.V311, MqttBufferWriter bufferWriter = null)
if (bufferWriter == null)
{
_protocolVersion = protocolVersion;
if (bufferWriter == null)
{
bufferWriter = new MqttBufferWriter(4096, 65535);
}
_packetFormatter = MqttPacketFormatterAdapter.GetMqttPacketFormatter(_protocolVersion, bufferWriter);
bufferWriter = new MqttBufferWriter(4096, 65535);
}
public MqttPacket Decode(MqttPacketBuffer buffer)
{
using (var channel = new MemoryMqttChannel(buffer.ToArray()))
{
var formatterAdapter = new MqttPacketFormatterAdapter(_protocolVersion, new MqttBufferWriter(4096, 65535));
_packetFormatter = MqttPacketFormatterAdapter.GetMqttPacketFormatter(_protocolVersion, bufferWriter);
}
var adapter = new MqttChannelAdapter(channel, formatterAdapter, MqttNetNullLogger.Instance);
return adapter.ReceivePacketAsync(CancellationToken.None).GetAwaiter().GetResult();
}
}
public MqttPacket Decode(MqttPacketBuffer buffer)
{
using var channel = new MemoryMqttChannel(buffer.ToArray());
var formatterAdapter = new MqttPacketFormatterAdapter(_protocolVersion, new MqttBufferWriter(4096, 65535));
public void Dispose()
{
}
var adapter = new MqttChannelAdapter(channel, formatterAdapter, MqttNetNullLogger.Instance);
return adapter.ReceivePacketAsync(CancellationToken.None).GetAwaiter().GetResult();
}
public MqttPacketBuffer Encode(MqttPacket packet)
{
return _packetFormatter.Encode(packet);
}
public static MqttPacket DecodePacket(byte[] buffer, MqttProtocolVersion protocolVersion)
{
using var helper = new MqttPacketSerializationHelper(protocolVersion);
return helper.Decode(new MqttPacketBuffer(buffer));
}
public static TPacket EncodeAndDecodePacket<TPacket>(TPacket packet, MqttProtocolVersion protocolVersion) where TPacket : MqttPacket
{
using (var helper = new MqttPacketSerializationHelper(protocolVersion))
{
var buffer = helper.Encode(packet);
return (TPacket)helper.Decode(buffer);
}
}
public void Dispose()
{
}
public static byte[] EncodePacket(MqttPacket packet)
{
using (var helper = new MqttPacketSerializationHelper())
{
return helper.Encode(packet).ToArray();
}
}
public MqttPacketBuffer Encode(MqttPacket packet)
{
return _packetFormatter.Encode(packet);
}
public static TPacket EncodeAndDecodePacket<TPacket>(TPacket packet, MqttProtocolVersion protocolVersion) where TPacket : MqttPacket
{
using var helper = new MqttPacketSerializationHelper(protocolVersion);
var buffer = helper.Encode(packet);
return (TPacket)helper.Decode(buffer);
}
public static byte[] EncodePacket(MqttPacket packet, MqttProtocolVersion protocolVersion)
{
using var helper = new MqttPacketSerializationHelper(protocolVersion);
return helper.Encode(packet).ToArray();
}
}