From d4c6fb44c9730cd179182e1584a1debeeae70be9 Mon Sep 17 00:00:00 2001 From: Christian Kratky Date: Tue, 23 Apr 2019 14:47:42 +0200 Subject: [PATCH] Expose PacketIdentifier in PublishResult. --- Build/MQTTnet.nuspec | 1 + .../Publishing/MqttClientPublishResult.cs | 2 ++ .../Formatter/V3/MqttV310DataConverter.cs | 1 + .../Formatter/V5/MqttV500DataConverter.cs | 19 ++++++++++--------- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/Build/MQTTnet.nuspec b/Build/MQTTnet.nuspec index c9c952fd..c2f91e42 100644 --- a/Build/MQTTnet.nuspec +++ b/Build/MQTTnet.nuspec @@ -25,6 +25,7 @@ * [Client] Fixed issues in QoS 2 handling which leads to message loss. * [Client] Replaced all events with proper async compatible handlers (BREAKING CHANGE!). * [Client] Added more configuration values to TCP endpoint options. +* [Client] Added used PacketIdentifier to publish result. * [ManagedClient] Replaced all events with proper async compatible handlers (BREAKING CHANGE!). * [ManagedClient] The log ID is now propagated to the internal client (thanks to @vbBerni). * [ManagedClient] Added validation of topics before publishing. diff --git a/Source/MQTTnet/Client/Publishing/MqttClientPublishResult.cs b/Source/MQTTnet/Client/Publishing/MqttClientPublishResult.cs index 5a4b45b0..15035ec0 100644 --- a/Source/MQTTnet/Client/Publishing/MqttClientPublishResult.cs +++ b/Source/MQTTnet/Client/Publishing/MqttClientPublishResult.cs @@ -6,6 +6,8 @@ namespace MQTTnet.Client.Publishing { public class MqttClientPublishResult { + public ushort? PacketIdentifier { get; set; } + public MqttClientPublishReasonCode ReasonCode { get; set; } = MqttClientPublishReasonCode.Success; public string ReasonString { get; set; } diff --git a/Source/MQTTnet/Formatter/V3/MqttV310DataConverter.cs b/Source/MQTTnet/Formatter/V3/MqttV310DataConverter.cs index 642720cc..11127ad6 100644 --- a/Source/MQTTnet/Formatter/V3/MqttV310DataConverter.cs +++ b/Source/MQTTnet/Formatter/V3/MqttV310DataConverter.cs @@ -199,6 +199,7 @@ namespace MQTTnet.Formatter.V3 { return new MqttClientPublishResult { + PacketIdentifier = pubAckPacket?.PacketIdentifier, ReasonCode = MqttClientPublishReasonCode.Success }; } diff --git a/Source/MQTTnet/Formatter/V5/MqttV500DataConverter.cs b/Source/MQTTnet/Formatter/V5/MqttV500DataConverter.cs index d6ad0aa5..c26ca620 100644 --- a/Source/MQTTnet/Formatter/V5/MqttV500DataConverter.cs +++ b/Source/MQTTnet/Formatter/V5/MqttV500DataConverter.cs @@ -189,21 +189,22 @@ namespace MQTTnet.Formatter.V5 public MqttClientPublishResult CreatePublishResult(MqttPubAckPacket pubAckPacket) { - var reasonCode = MqttClientPublishReasonCode.Success; - if (pubAckPacket != null) - { - // QoS 0 has no response. So we treat it as a success always. - reasonCode = (MqttClientPublishReasonCode)pubAckPacket.ReasonCode; - } - var result = new MqttClientPublishResult { - // Both enums share the same values. - ReasonCode = reasonCode, + ReasonCode = MqttClientPublishReasonCode.Success, ReasonString = pubAckPacket?.Properties?.ReasonString, UserProperties = pubAckPacket?.Properties?.UserProperties }; + if (pubAckPacket != null) + { + // QoS 0 has no response. So we treat it as a success always. + // Both enums have the same values. So it can be easily converted. + result.ReasonCode = (MqttClientPublishReasonCode)pubAckPacket.ReasonCode; + + result.PacketIdentifier = pubAckPacket.PacketIdentifier; + } + return result; }