dont use byte reader writer in critical paths

This commit is contained in:
Eggers Jan
2017-09-13 09:10:41 +02:00
parent c001897590
commit 323339b0b2
2 changed files with 15 additions and 8 deletions
+1 -3
View File
@@ -52,9 +52,7 @@ namespace MQTTnet.Core.Serializer
public static MqttPacketHeader ReadHeaderFromSource(Stream stream)
{
var fixedHeader = (byte)stream.ReadByte();
var byteReader = new ByteReader(fixedHeader);
byteReader.Read(4);
var controlPacketType = (MqttControlPacketType)byteReader.Read(4);
var controlPacketType = (MqttControlPacketType)(fixedHeader >> 4);
var bodyLength = ReadBodyLengthFromSource(stream);
return new MqttPacketHeader()
@@ -512,12 +512,21 @@ namespace MQTTnet.Core.Serializer
writer.Write(packet.Payload);
}
var fixedHeader = new ByteWriter();
fixedHeader.Write(packet.Retain);
fixedHeader.Write((byte)packet.QualityOfServiceLevel, 2);
fixedHeader.Write(packet.Dup);
byte fixedHeader = 0;
return MqttPacketWriter.BuildFixedHeader(MqttControlPacketType.Publish, fixedHeader.Value);
if (packet.Retain)
{
fixedHeader |= 0x01;
}
fixedHeader |= (byte)((byte)packet.QualityOfServiceLevel << 1);
if ( packet.Dup )
{
fixedHeader |= 0x08;
}
return MqttPacketWriter.BuildFixedHeader(MqttControlPacketType.Publish, fixedHeader);
}
private static byte Serialize(MqttPubAckPacket packet, MqttPacketWriter writer)