From 31de6ee186215269ae76300f6a435f295338ddba Mon Sep 17 00:00:00 2001 From: Paul Fake Date: Wed, 21 Nov 2018 21:39:42 -0500 Subject: [PATCH] Delegate comparison function --- .../ManagedMqttClient.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClient.cs b/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClient.cs index 3568d1f7..da36023e 100644 --- a/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClient.cs +++ b/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClient.cs @@ -300,7 +300,7 @@ namespace MQTTnet.Extensions.ManagedClient //in the queue is equal to this message, then it's safe to remove //it from the queue. If not, that means this.PublishAsync has already //removed it, in which case we don't want to do anything. - _messageQueue.RemoveFirstIfEqual(message); + _messageQueue.RemoveFirstIfEqual(message, IdsAreEqual); } _storageManager?.RemoveAsync(message).GetAwaiter().GetResult(); } @@ -321,7 +321,7 @@ namespace MQTTnet.Extensions.ManagedClient //with prior behavior in that way. lock (_messageQueue) //lock to avoid conflict with this.PublishAsync { - _messageQueue.RemoveFirstIfEqual(message); + _messageQueue.RemoveFirstIfEqual(message, IdsAreEqual); } } } @@ -335,6 +335,11 @@ namespace MQTTnet.Extensions.ManagedClient ApplicationMessageProcessed?.Invoke(this, new ApplicationMessageProcessedEventArgs(message, transmitException)); } } + + private bool IdsAreEqual(ManagedMqttApplicationMessage message1, ManagedMqttApplicationMessage message2) + { + return message1.Id.Equals(message2.Id); + } private async Task SynchronizeSubscriptionsAsync() {