added span based writer

This commit is contained in:
JanEggers
2019-04-15 14:43:49 +02:00
parent aee10ba6fa
commit a9944def68
15 changed files with 334 additions and 62 deletions
@@ -13,5 +13,10 @@ namespace MQTTnet.AspNetCore.Tests
result.SetBuffer(data);
return result;
}
protected override IMqttPacketWriter WriterFactory()
{
return new SpanBasedMqttPacketWriter();
}
}
}
@@ -528,6 +528,11 @@ namespace MQTTnet.Tests
Assert.AreEqual(expectedBase64Value, Convert.ToBase64String(Join(data)));
}
protected virtual IMqttPacketWriter WriterFactory()
{
return new MqttPacketWriter();
}
protected virtual IMqttPacketBodyReader ReaderFactory(byte[] data)
{
return new MqttPacketBodyReader(data, 0, data.Length);
@@ -535,14 +540,16 @@ namespace MQTTnet.Tests
private void DeserializeAndCompare(MqttBasePacket packet, string expectedBase64Value, MqttProtocolVersion protocolVersion = MqttProtocolVersion.V311)
{
var writer = WriterFactory();
IMqttPacketFormatter serializer;
if (protocolVersion == MqttProtocolVersion.V311)
{
serializer = new MqttV311PacketFormatter();
serializer = new MqttV311PacketFormatter(writer);
}
else if (protocolVersion == MqttProtocolVersion.V310)
{
serializer = new MqttV310PacketFormatter();
serializer = new MqttV310PacketFormatter(writer);
}
else
{
@@ -559,7 +566,8 @@ namespace MQTTnet.Tests
using (var bodyStream = new MemoryStream(Join(buffer1), (int)headerStream.Position, header.RemainingLength))
{
var deserializedPacket = serializer.Decode(new ReceivedMqttPacket(header.Flags, new MqttPacketBodyReader(bodyStream.ToArray(), 0, (int)bodyStream.Length), 0));
var reader = ReaderFactory(bodyStream.ToArray());
var deserializedPacket = serializer.Decode(new ReceivedMqttPacket(header.Flags, reader, 0));
var buffer2 = serializer.Encode(deserializedPacket);
Assert.AreEqual(expectedBase64Value, Convert.ToBase64String(Join(buffer2)));
@@ -567,17 +575,19 @@ namespace MQTTnet.Tests
}
}
private static T Roundtrip<T>(T packet, MqttProtocolVersion protocolVersion = MqttProtocolVersion.V311)
private T Roundtrip<T>(T packet, MqttProtocolVersion protocolVersion = MqttProtocolVersion.V311)
where T : MqttBasePacket
{
var writer = WriterFactory();
IMqttPacketFormatter serializer;
if (protocolVersion == MqttProtocolVersion.V311)
{
serializer = new MqttV311PacketFormatter();
serializer = new MqttV311PacketFormatter(writer);
}
else if (protocolVersion == MqttProtocolVersion.V310)
{
serializer = new MqttV310PacketFormatter();
serializer = new MqttV310PacketFormatter(writer);
}
else
{
@@ -595,7 +605,8 @@ namespace MQTTnet.Tests
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), 0));
var reader = ReaderFactory(bodyStream.ToArray());
return (T)serializer.Decode(new ReceivedMqttPacket(header.Flags, reader, 0));
}
}
}