public void SingleQos_ExactlyOnce() { var expected = new[] { (byte)0x90, (byte)0x03, (byte)0x00, (byte)0x02, (byte)0x02, }; MqttMessage msg = new MqttSubscribeAckMessage() .WithMessageIdentifier(2) .AddQosGrant(MqttQos.ExactlyOnce); Console.WriteLine(msg); byte[] actual = MessageSerializationHelper.GetMessageBytes(msg); Assert.Equal <int>(expected.Length, actual.Length); Assert.Equal <byte>(expected[0], actual[0]); // header byte 1 Assert.Equal <byte>(expected[1], actual[1]); // remaining length Assert.Equal <byte>(expected[2], actual[2]); // message id b1 Assert.Equal <byte>(expected[3], actual[3]); // message id b2 Assert.Equal <byte>(expected[4], actual[4]); // QOS }
public void MultipleQos() { // Message Specs________________ // <90><03><00><02><00> <01><02> var sampleMessage = new[] { (byte)0x90, (byte)0x05, (byte)0x00, (byte)0x02, (byte)0x00, (byte)0x01, (byte)0x02, }; MqttMessage baseMessage = MqttMessage.CreateFrom(sampleMessage); Console.WriteLine(baseMessage.ToString()); // check that the message was correctly identified as a connect message. Assert.IsType <MqttSubscribeAckMessage>(baseMessage); MqttSubscribeAckMessage message = (MqttSubscribeAckMessage)baseMessage; Assert.Equal <int>(3, message.Payload.QosGrants.Count); Assert.Equal <MqttQos>(MqttQos.AtMostOnce, message.Payload.QosGrants[0]); Assert.Equal <MqttQos>(MqttQos.AtLeastOnce, message.Payload.QosGrants[1]); Assert.Equal <MqttQos>(MqttQos.ExactlyOnce, message.Payload.QosGrants[2]); }
private void SubscribeReceived(IMqttSession session, MqttSubscribeMessage subscribeMessage) { MqttSubscribeAckMessage subAck = new MqttSubscribeAckMessage().WithMessageIdentifier(subscribeMessage.VariableHeader.MessageIdentifier); AddSubscriptions(session, subscribeMessage.Payload.Subscriptions); session.Write(subAck); PublishMessages(session, storageProvider.GetRetained(subscribeMessage.Payload.Subscriptions), true); }
public void ClearGrantsClearsGrants() { MqttSubscribeAckMessage msg = new MqttSubscribeAckMessage() .WithMessageIdentifier(2) .AddQosGrant(MqttQos.AtMostOnce) .AddQosGrant(MqttQos.AtLeastOnce) .AddQosGrant(MqttQos.ExactlyOnce); Assert.Equal <int>(3, msg.Payload.QosGrants.Count); msg.Payload.ClearGrants(); Assert.Equal <int>(0, msg.Payload.QosGrants.Count); }
private void SubscribeReceived(WebSocketSession session, MqttSubscribeMessage subscribeMessage) { MqttSubscribeAckMessage subAck = new MqttSubscribeAckMessage().WithMessageIdentifier(subscribeMessage.VariableHeader.MessageIdentifier); AddSubscriptions(session, subscribeMessage.Payload.Subscriptions); using (var messageStream = new MemoryStream()) { subAck.WriteTo(messageStream); ArraySegment <byte> bytes = new ArraySegment <byte>(messageStream.ToArray()); session.Send(bytes); } }
private async void SubscribeToTopic() { try { MqttSubscribeAckMessage ack = await SubscribeAsync(new[] { _subscription }, 1); _subscribed = true; } catch (Exception ex) { if (_errorCallback != null) { _errorCallback(ex); } } }