public async Task SendQosConfirmMsg(QualityOfService qos, MqttChannel mqttChannel, string topic, byte[] bytes) { if (mqttChannel.IsLogin()) { int messageId = MessageIdGenerater.GenerateId(); switch (qos) { case QualityOfService.AtLeastOnce: mqttChannel.AddMqttMessage(messageId, await SendQos1Msg(mqttChannel.Channel, topic, false, bytes, messageId)); break; case QualityOfService.ExactlyOnce: mqttChannel.AddMqttMessage(messageId, await SendQos2Msg(mqttChannel.Channel, topic, false, bytes, messageId)); break; } } }
/// <summary> /// Sends the pub record. /// </summary> /// <param name="mqttChannel">The MQTT channel.</param> /// <param name="messageId">The message identifier.</param> public async Task SendPubRec(MqttChannel mqttChannel, int messageId) { var mqttPubAckMessage = new PubRecPacket { PacketId = messageId }; var channel = mqttChannel.Channel; await channel.WriteAndFlushAsync(mqttPubAckMessage); var sendMqttMessage = Enqueue(channel, messageId, null, null, 1, ConfirmStatus.PUBREC); mqttChannel.AddMqttMessage(messageId, sendMqttMessage); }