Expose results of publish operations for MQTTv5.

This commit is contained in:
Christian Kratky
2019-04-18 00:01:22 +02:00
parent 420b35e37d
commit a8434d1b58
2 changed files with 20 additions and 5 deletions
@@ -1,8 +1,15 @@
using System.Collections.Generic;
using MQTTnet.Packets;
namespace MQTTnet.Client.Publishing namespace MQTTnet.Client.Publishing
{ {
public class MqttClientPublishResult public class MqttClientPublishResult
{ {
public MqttClientPublishReasonCode ReasonCode { get; set; } = MqttClientPublishReasonCode.Success; public MqttClientPublishReasonCode ReasonCode { get; set; } = MqttClientPublishReasonCode.Success;
public string ReasonString { get; set; }
public List<MqttUserProperty> UserProperties { get; set; }
} }
} }
@@ -191,7 +191,10 @@ namespace MQTTnet.Formatter.V5
{ {
var result = new MqttClientPublishResult var result = new MqttClientPublishResult
{ {
ReasonCode = (MqttClientPublishReasonCode)pubAckPacket.ReasonCode // Both enums share the same values.
ReasonCode = (MqttClientPublishReasonCode)pubAckPacket.ReasonCode.Value,
ReasonString = pubAckPacket.Properties?.ReasonString,
UserProperties = pubAckPacket.Properties?.UserProperties
}; };
return result; return result;
@@ -207,17 +210,22 @@ namespace MQTTnet.Formatter.V5
}; };
} }
// The PUBCOMP is the last packet in QoS 2. So we use the results from that instead of PUBREC.
if (pubCompPacket.ReasonCode == MqttPubCompReasonCode.PacketIdentifierNotFound) if (pubCompPacket.ReasonCode == MqttPubCompReasonCode.PacketIdentifierNotFound)
{ {
return new MqttClientPublishResult return new MqttClientPublishResult
{ {
ReasonCode = MqttClientPublishReasonCode.UnspecifiedError ReasonCode = MqttClientPublishReasonCode.UnspecifiedError,
ReasonString = pubCompPacket.Properties?.ReasonString,
UserProperties = pubCompPacket.Properties?.UserProperties
}; };
} }
var result = new MqttClientPublishResult var result = new MqttClientPublishResult
{ {
ReasonCode = MqttClientPublishReasonCode.Success ReasonCode = MqttClientPublishReasonCode.Success,
ReasonString = pubCompPacket.Properties?.ReasonString,
UserProperties = pubCompPacket.Properties?.UserProperties
}; };
if (pubRecPacket.ReasonCode.HasValue) if (pubRecPacket.ReasonCode.HasValue)