Пример #1
0
        public void Serialize_LargePacket()
        {
            var serializer = new MqttV311PacketFormatter(WriterFactory());

            const int payloadLength = 80000;

            var payload = new byte[payloadLength];

            var value = 0;

            for (var i = 0; i < payloadLength; i++)
            {
                if (value > 255)
                {
                    value = 0;
                }

                payload[i] = (byte)value;
            }

            var publishPacket = new MqttPublishPacket
            {
                Topic   = "abcdefghijklmnopqrstuvwxyz0123456789",
                Payload = payload
            };


            var publishPacketCopy = Roundtrip(publishPacket);

            //var buffer = serializer.Encode(publishPacket);
            //var testChannel = new TestMqttChannel(new MemoryStream(buffer.Array, buffer.Offset, buffer.Count));


            //var header = new MqttPacketReader(testChannel).ReadFixedHeaderAsync(
            //    new byte[2],
            //    CancellationToken.None).GetAwaiter().GetResult().FixedHeader;

            //var eof = buffer.Offset + buffer.Count;

            //var receivedPacket = new ReceivedMqttPacket(
            //    header.Flags,
            //    new MqttPacketBodyReader(buffer.Array, eof - header.RemainingLength, buffer.Count + buffer.Offset),
            //    0);

            //var packet = (MqttPublishPacket)serializer.Decode(receivedPacket);

            Assert.AreEqual(publishPacket.Topic, publishPacketCopy.Topic);
            Assert.IsTrue(publishPacket.Payload.SequenceEqual(publishPacketCopy.Payload));
        }
Пример #2
0
        private static void SerializeAndCompare(MqttBasePacket packet, string expectedBase64Value, MqttProtocolVersion protocolVersion = MqttProtocolVersion.V311)
        {
            IMqttPacketFormatter serializer;

            if (protocolVersion == MqttProtocolVersion.V311)
            {
                serializer = new MqttV311PacketFormatter();
            }
            else if (protocolVersion == MqttProtocolVersion.V310)
            {
                serializer = new MqttV310PacketFormatter();
            }
            else
            {
                throw new NotSupportedException();
            }

            var data = serializer.Encode(packet);

            Assert.AreEqual(expectedBase64Value, Convert.ToBase64String(Join(data)));
        }