Refactorings

This commit is contained in:
Christian Kratky
2017-09-13 21:01:25 +02:00
parent 1a1c0beabc
commit a956de3df7
3 changed files with 15 additions and 15 deletions
+4 -3
View File
@@ -13,8 +13,8 @@ namespace MQTTnet.Core.Serializer
{ {
private readonly MqttPacketHeader _header; private readonly MqttPacketHeader _header;
public MqttPacketReader(Stream stream, MqttPacketHeader header) public MqttPacketReader(MqttPacketHeader header, Stream body)
: base(stream) : base(body)
{ {
_header = header; _header = header;
} }
@@ -54,10 +54,11 @@ namespace MQTTnet.Core.Serializer
var fixedHeader = await ReadStreamByteAsync(source, buffer).ConfigureAwait(false); var fixedHeader = await ReadStreamByteAsync(source, buffer).ConfigureAwait(false);
var byteReader = new ByteReader(fixedHeader); var byteReader = new ByteReader(fixedHeader);
byteReader.Read(4); byteReader.Read(4);
var controlPacketType = (MqttControlPacketType)byteReader.Read(4); var controlPacketType = (MqttControlPacketType)byteReader.Read(4);
var bodyLength = await ReadBodyLengthFromSourceAsync(source, buffer).ConfigureAwait(false); var bodyLength = await ReadBodyLengthFromSourceAsync(source, buffer).ConfigureAwait(false);
return new MqttPacketHeader() return new MqttPacketHeader
{ {
FixedHeader = fixedHeader, FixedHeader = fixedHeader,
ControlPacketType = controlPacketType, ControlPacketType = controlPacketType,
@@ -17,7 +17,7 @@ namespace MQTTnet.Core.Serializer
private static byte[] ProtocolVersionV310Name { get; } = Encoding.UTF8.GetBytes("MQIs"); private static byte[] ProtocolVersionV310Name { get; } = Encoding.UTF8.GetBytes("MQIs");
public MqttProtocolVersion ProtocolVersion { get; set; } = MqttProtocolVersion.V311; public MqttProtocolVersion ProtocolVersion { get; set; } = MqttProtocolVersion.V311;
private byte[] _readBuffer = new byte[BufferConstants.Size]; private byte[] _readBuffer = new byte[BufferConstants.Size]; // TODO: What happens if the message is bigger?
public async Task SerializeAsync(MqttBasePacket packet, IMqttCommunicationChannel destination) public async Task SerializeAsync(MqttBasePacket packet, IMqttCommunicationChannel destination)
{ {
@@ -27,9 +27,7 @@ namespace MQTTnet.Core.Serializer
using (var stream = new MemoryStream()) using (var stream = new MemoryStream())
using (var writer = new MqttPacketWriter(stream)) using (var writer = new MqttPacketWriter(stream))
{ {
var header = new List<byte>(); var header = new List<byte> { SerializePacket(packet, writer) };
header.Add(SerializePacket(packet, writer));
var body = stream.ToArray(); var body = stream.ToArray();
MqttPacketWriter.BuildLengthHeader(body.Length, header); MqttPacketWriter.BuildLengthHeader(body.Length, header);
@@ -118,10 +116,9 @@ namespace MQTTnet.Core.Serializer
if (source == null) throw new ArgumentNullException(nameof(source)); if (source == null) throw new ArgumentNullException(nameof(source));
var header = await MqttPacketReader.ReadHeaderFromSourceAsync(source, _readBuffer).ConfigureAwait(false); var header = await MqttPacketReader.ReadHeaderFromSourceAsync(source, _readBuffer).ConfigureAwait(false);
var body = await GetBody(source, header).ConfigureAwait(false); var body = await GetBody(source, header).ConfigureAwait(false);
using (var mqttPacketReader = new MqttPacketReader(body, header)) using (var mqttPacketReader = new MqttPacketReader(header, body))
{ {
switch (header.ControlPacketType) switch (header.ControlPacketType)
{ {
@@ -412,9 +409,7 @@ namespace MQTTnet.Core.Serializer
else else
{ {
writer.Write(ProtocolVersionV310Name); writer.Write(ProtocolVersionV310Name);
writer.Write(0x64); writer.Write(0x64, 0x70, 0x03); // Protocol Level (0x03)
writer.Write(0x70);
writer.Write(0x03); // Protocol Level (3)
} }
var connectFlags = new ByteWriter(); // 3.1.2.3 Connect Flags var connectFlags = new ByteWriter(); // 3.1.2.3 Connect Flags
+6 -2
View File
@@ -24,8 +24,7 @@ namespace MQTTnet.Core.Serializer
public override void Write(ushort value) public override void Write(ushort value)
{ {
var buffer = BitConverter.GetBytes(value); var buffer = BitConverter.GetBytes(value);
Write(buffer[1]); Write(buffer[1], buffer[0]);
Write(buffer[0]);
} }
public new void Write(params byte[] values) public new void Write(params byte[] values)
@@ -33,6 +32,11 @@ namespace MQTTnet.Core.Serializer
base.Write(values); base.Write(values);
} }
public new void Write(byte value)
{
base.Write(value);
}
public void Write(ByteWriter value) public void Write(ByteWriter value)
{ {
if (value == null) throw new ArgumentNullException(nameof(value)); if (value == null) throw new ArgumentNullException(nameof(value));