Beispiel #1
0
        public void Setup()
        {
            _packet = new MqttPublishPacket
            {
                Topic = "A"
            };

            var serializer = new MqttPacketFormatterAdapter(MqttProtocolVersion.V311, new MqttBufferWriter(4096, 65535));

            var serializedPacket = Join(serializer.Encode(_packet).Join());

            _iterations = 10000;

            _stream = new MemoryStream(_iterations * serializedPacket.Length);

            for (var i = 0; i < _iterations; i++)
            {
                _stream.Write(serializedPacket, 0, serializedPacket.Length);
            }

            _stream.Position = 0;

            var channel = new MemoryMqttChannel(_stream);

            _channelAdapter = new MqttChannelAdapter(channel, serializer, null, new MqttNetEventLogger());
        }
Beispiel #2
0
        void DeserializeAndCompare(MqttPacket packet, string expectedBase64Value, MqttProtocolVersion protocolVersion = MqttProtocolVersion.V311)
        {
            var writer = WriterFactory();

            var serializer = MqttPacketFormatterAdapter.GetMqttPacketFormatter(protocolVersion, writer);
            var buffer1    = serializer.Encode(packet);

            using (var headerStream = new MemoryStream(buffer1.Join().ToArray()))
            {
                using (var channel = new MemoryMqttChannel(headerStream))
                {
                    using (var adapter = new MqttChannelAdapter(
                               channel,
                               new MqttPacketFormatterAdapter(protocolVersion, new MqttBufferWriter(4096, 65535)),
                               null,
                               new MqttNetEventLogger()))
                    {
                        var receivedPacket = adapter.ReceivePacketAsync(CancellationToken.None).GetAwaiter().GetResult();

                        var buffer2 = serializer.Encode(receivedPacket);

                        Assert.AreEqual(expectedBase64Value, Convert.ToBase64String(buffer2.Join().ToArray()));
                    }
                }
            }
        }
Beispiel #3
0
        MqttProtocolVersion DeserializeAndDetectVersion(MqttPacketFormatterAdapter packetFormatterAdapter, byte[] buffer)
        {
            var channel = new MemoryMqttChannel(buffer);
            var adapter = new MqttChannelAdapter(channel, packetFormatterAdapter, null, new MqttNetEventLogger());

            adapter.ReceivePacketAsync(CancellationToken.None).GetAwaiter().GetResult();
            return(packetFormatterAdapter.ProtocolVersion);
        }
        public MqttPacket Decode(MqttPacketBuffer buffer)
        {
            using (var channel = new MemoryMqttChannel(buffer.ToArray()))
            {
                var formatterAdapter = new MqttPacketFormatterAdapter(_protocolVersion, new MqttBufferWriter(4096, 65535));

                var adapter = new MqttChannelAdapter(channel, formatterAdapter, null, MqttNetNullLogger.Instance);
                return adapter.ReceivePacketAsync(CancellationToken.None).GetAwaiter().GetResult();
            }
        }
Beispiel #5
0
        TPacket Roundtrip <TPacket>(TPacket packet, MqttProtocolVersion protocolVersion = MqttProtocolVersion.V311, MqttBufferWriter bufferWriter = null) where TPacket : MqttPacket
        {
            var writer     = bufferWriter ?? WriterFactory();
            var serializer = MqttPacketFormatterAdapter.GetMqttPacketFormatter(protocolVersion, writer);
            var buffer     = serializer.Encode(packet);

            using (var channel = new MemoryMqttChannel(buffer.Join().ToArray()))
            {
                var adapter = new MqttChannelAdapter(channel, new MqttPacketFormatterAdapter(protocolVersion, new MqttBufferWriter(4096, 65535)), null, new MqttNetEventLogger());
                return((TPacket)adapter.ReceivePacketAsync(CancellationToken.None).GetAwaiter().GetResult());
            }
        }