From 3937aa76e34f9e96fc5b368ebe358a547c92177e Mon Sep 17 00:00:00 2001 From: Christian <6939810+chkr1011@users.noreply.github.com> Date: Sun, 13 Nov 2022 18:41:28 +0100 Subject: [PATCH] Fix merge conflicts --- .../ManagedMqttClientExtensions.cs | 9 +++-- .../New/NewManagedMqttClient.cs | 9 ++--- .../ManagedMqttClient_Connection_Tests.cs | 9 ++--- .../ManagedMqttClient_Event_Tests.cs | 14 +++---- .../ManagedMqttClient_Messages_Tests.cs | 3 +- .../MQTTnet.Tests/Mockups/TestEnvironment.cs | 2 +- .../MqttClientDisconnectOptions.cs | 5 +++ Source/MQTTnet/Server/MqttServerExtensions.cs | 37 ++++++++++--------- 8 files changed, 48 insertions(+), 40 deletions(-) diff --git a/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientExtensions.cs b/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientExtensions.cs index 1135471b..5996cae3 100644 --- a/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientExtensions.cs +++ b/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientExtensions.cs @@ -39,16 +39,19 @@ namespace MQTTnet.Extensions.ManagedClient return managedMqttClient.EnqueueAsync(applicationMessage); } - public static Task StopAsync(this IManagedMqttClient managedMqttClient, CancellationToken cancellationToken = default) + public static Task StopAsync(this IManagedMqttClient managedMqttClient, bool isClean = true, CancellationToken cancellationToken = default) { if (managedMqttClient == null) { throw new ArgumentNullException(nameof(managedMqttClient)); } - return managedMqttClient.StopAsync(new MqttClientDisconnectOptions(), cancellationToken); + return managedMqttClient.StopAsync(new MqttClientDisconnectOptions + { + IsClean = isClean + }, cancellationToken); } - + public static Task SubscribeAsync(this IManagedMqttClient managedMqttClient, MqttTopicFilter topicFilter) { if (managedMqttClient == null) diff --git a/Source/MQTTnet.Extensions.ManagedClient/New/NewManagedMqttClient.cs b/Source/MQTTnet.Extensions.ManagedClient/New/NewManagedMqttClient.cs index 4b66ed09..d12a3086 100644 --- a/Source/MQTTnet.Extensions.ManagedClient/New/NewManagedMqttClient.cs +++ b/Source/MQTTnet.Extensions.ManagedClient/New/NewManagedMqttClient.cs @@ -7,7 +7,6 @@ using System.Threading; using System.Threading.Tasks; using MQTTnet.Client; using MQTTnet.Diagnostics; -using MQTTnet.Implementations; using MQTTnet.Internal; namespace MQTTnet.Extensions.ManagedClient @@ -145,7 +144,7 @@ namespace MQTTnet.Extensions.ManagedClient _workSignal.Set(); - return PlatformAbstractionLayer.CompletedTask; + return CompletedTask.Instance; } public async Task StopAsync(MqttClientDisconnectOptions options, CancellationToken cancellationToken = default) @@ -183,7 +182,7 @@ namespace MQTTnet.Extensions.ManagedClient _subscriptionsManager.Subscribe(options); _workSignal.Set(); - return PlatformAbstractionLayer.CompletedTask; + return CompletedTask.Instance; } public Task UnsubscribeAsync(MqttClientUnsubscribeOptions options) @@ -193,7 +192,7 @@ namespace MQTTnet.Extensions.ManagedClient _subscriptionsManager.Unsubscribe(options); _workSignal.Set(); - return PlatformAbstractionLayer.CompletedTask; + return CompletedTask.Instance; } protected override void Dispose(bool disposing) @@ -208,7 +207,7 @@ namespace MQTTnet.Extensions.ManagedClient Task OnInternalClientDisconnected(MqttClientDisconnectedEventArgs eventArgs) { _workSignal.Set(); - return PlatformAbstractionLayer.CompletedTask; + return CompletedTask.Instance; } async Task UpdateConnectionStatus(MaintainConnectionResult maintainConnectionResult) diff --git a/Source/MQTTnet.Tests/ManagedMqttClient/ManagedMqttClient_Connection_Tests.cs b/Source/MQTTnet.Tests/ManagedMqttClient/ManagedMqttClient_Connection_Tests.cs index 5867c93b..8e7f195a 100644 --- a/Source/MQTTnet.Tests/ManagedMqttClient/ManagedMqttClient_Connection_Tests.cs +++ b/Source/MQTTnet.Tests/ManagedMqttClient/ManagedMqttClient_Connection_Tests.cs @@ -9,10 +9,10 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Client; -using MQTTnet.Diagnostics; using MQTTnet.Extensions.ManagedClient; using MQTTnet.Formatter; using MQTTnet.Internal; +using MQTTnet.Protocol; using MQTTnet.Server; using MQTTnet.Tests.Mockups; @@ -86,11 +86,9 @@ namespace MQTTnet.Tests.ManagedMqttClient using (var testEnvironment = CreateTestEnvironment()) { await testEnvironment.StartServer(); - var managedClient = await testEnvironment.StartManagedClient(); - await LongTestDelay(); - var managedClient = testEnvironment.Factory.CreateManagedMqttClient(mqttClient); + var managedClient = testEnvironment.Factory.CreateManagedMqttClient(testEnvironment.CreateClient()); ConnectingFailedEventArgs connectingFailedEventArgs = null; managedClient.ConnectingFailedAsync += args => @@ -314,7 +312,6 @@ namespace MQTTnet.Tests.ManagedMqttClient await server.InjectApplicationMessage(testEnvironment.Factory.CreateApplicationMessageBuilder().WithTopic("topic").WithPayload("payload").WithRetainFlag().Build()); // Now use the managed client and check if subscriptions get cleared properly. - var managedClient = testEnvironment.CreateManagedMqttClient(); var receivedManagedMessages = new List(); var managedClient = testEnvironment.Factory.CreateManagedMqttClient(testEnvironment.CreateClient()); @@ -453,7 +450,7 @@ namespace MQTTnet.Tests.ManagedMqttClient managedClient.ConnectedAsync += e => { - connected.TrySetResult(true); + promise.TrySetResult(true); return CompletedTask.Instance; }; diff --git a/Source/MQTTnet.Tests/ManagedMqttClient/ManagedMqttClient_Event_Tests.cs b/Source/MQTTnet.Tests/ManagedMqttClient/ManagedMqttClient_Event_Tests.cs index ae877dd2..0e51ead6 100644 --- a/Source/MQTTnet.Tests/ManagedMqttClient/ManagedMqttClient_Event_Tests.cs +++ b/Source/MQTTnet.Tests/ManagedMqttClient/ManagedMqttClient_Event_Tests.cs @@ -7,7 +7,7 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Extensions.ManagedClient; -using MQTTnet.Implementations; +using MQTTnet.Internal; namespace MQTTnet.Tests.ManagedMqttClient { @@ -27,7 +27,7 @@ namespace MQTTnet.Tests.ManagedMqttClient managedClient.ConnectedAsync += e => { eventFired = true; - return PlatformAbstractionLayer.CompletedTask; + return CompletedTask.Instance; }; await managedClient.StartAsync(testEnvironment.CreateDefaultManagedMqttClientOptions()); @@ -51,7 +51,7 @@ namespace MQTTnet.Tests.ManagedMqttClient managedClient.ConnectingFailedAsync += args => { connectingFailedEventArgs = args; - return PlatformAbstractionLayer.CompletedTask; + return CompletedTask.Instance; }; await managedClient.StartAsync( @@ -82,7 +82,7 @@ namespace MQTTnet.Tests.ManagedMqttClient managedClient.DisconnectedAsync += e => { eventFired = true; - return PlatformAbstractionLayer.CompletedTask; + return CompletedTask.Instance; }; await managedClient.StartAsync(testEnvironment.CreateDefaultManagedMqttClientOptions()); @@ -110,7 +110,7 @@ namespace MQTTnet.Tests.ManagedMqttClient managedClient.ApplicationMessageEnqueueingAsync += e => { eventFired = true; - return PlatformAbstractionLayer.CompletedTask; + return CompletedTask.Instance; }; await managedClient.EnqueueAsync("A"); @@ -134,7 +134,7 @@ namespace MQTTnet.Tests.ManagedMqttClient managedClient.SubscribeProcessedAsync += e => { eventFired = e.Options.TopicFilters[0].Topic == "A"; - return PlatformAbstractionLayer.CompletedTask; + return CompletedTask.Instance; }; await managedClient.StartAsync(testEnvironment.CreateDefaultManagedMqttClientOptions()); @@ -160,7 +160,7 @@ namespace MQTTnet.Tests.ManagedMqttClient managedClient.UnsubscribeProcessedAsync += e => { eventFired = e.Options.TopicFilters[0] == "A"; - return PlatformAbstractionLayer.CompletedTask; + return CompletedTask.Instance; }; await managedClient.StartAsync(testEnvironment.CreateDefaultManagedMqttClientOptions()); diff --git a/Source/MQTTnet.Tests/ManagedMqttClient/ManagedMqttClient_Messages_Tests.cs b/Source/MQTTnet.Tests/ManagedMqttClient/ManagedMqttClient_Messages_Tests.cs index 44c9f390..22f32171 100644 --- a/Source/MQTTnet.Tests/ManagedMqttClient/ManagedMqttClient_Messages_Tests.cs +++ b/Source/MQTTnet.Tests/ManagedMqttClient/ManagedMqttClient_Messages_Tests.cs @@ -8,6 +8,7 @@ using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Extensions.ManagedClient; using MQTTnet.Implementations; +using MQTTnet.Internal; using MQTTnet.Server; namespace MQTTnet.Tests.ManagedMqttClient @@ -93,7 +94,7 @@ namespace MQTTnet.Tests.ManagedMqttClient managedClient.ApplicationMessageReceivedAsync += e => { applicationMessages.Add(e.ApplicationMessage); - return PlatformAbstractionLayer.CompletedTask; + return CompletedTask.Instance; }; await managedClient.SubscribeAsync("B"); diff --git a/Source/MQTTnet.Tests/Mockups/TestEnvironment.cs b/Source/MQTTnet.Tests/Mockups/TestEnvironment.cs index 6a5bbe7f..cee0ea07 100644 --- a/Source/MQTTnet.Tests/Mockups/TestEnvironment.cs +++ b/Source/MQTTnet.Tests/Mockups/TestEnvironment.cs @@ -452,7 +452,7 @@ namespace MQTTnet.Tests.Mockups ServerReceivedApplicationMessages.Add(arg.ApplicationMessage); } - return PlatformAbstractionLayer.CompletedTask; + return CompletedTask.Instance; } } } \ No newline at end of file diff --git a/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectOptions.cs b/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectOptions.cs index 7dd7e0f2..818d10f5 100644 --- a/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectOptions.cs +++ b/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectOptions.cs @@ -6,6 +6,11 @@ namespace MQTTnet.Client { public sealed class MqttClientDisconnectOptions { + /// + /// Gets or sets whether this disconnect is a clean disconnect. + /// + public bool IsClean { get; set; } + /// /// Gets or sets the reason code. /// Hint: MQTT 5 feature only. diff --git a/Source/MQTTnet/Server/MqttServerExtensions.cs b/Source/MQTTnet/Server/MqttServerExtensions.cs index 482f7099..917685b3 100644 --- a/Source/MQTTnet/Server/MqttServerExtensions.cs +++ b/Source/MQTTnet/Server/MqttServerExtensions.cs @@ -14,6 +14,19 @@ namespace MQTTnet.Server public static class MqttServerExtensions { public static Task InjectApplicationMessage(this MqttServer server, MqttApplicationMessage applicationMessage) + { + if (server == null) + { + throw new ArgumentNullException(nameof(server)); + } + + return server.InjectApplicationMessage( + new InjectedMqttApplicationMessage(applicationMessage) + { + SenderClientId = string.Empty + }); + } + public static Task InjectApplicationMessage( this MqttServer server, string topic, @@ -26,15 +39,6 @@ namespace MQTTnet.Server throw new ArgumentNullException(nameof(server)); } - if (applicationMessage == null) - { - throw new ArgumentNullException(nameof(applicationMessage)); - } - - return server.InjectApplicationMessage(new InjectedMqttApplicationMessage(applicationMessage) - { - SenderClientId = string.Empty - }); if (topic == null) { throw new ArgumentNullException(nameof(topic)); @@ -47,14 +51,13 @@ namespace MQTTnet.Server } return server.InjectApplicationMessage( - new InjectedMqttApplicationMessage( - new MqttApplicationMessage - { - Topic = topic, - Payload = payloadBuffer, - QualityOfServiceLevel = qualityOfServiceLevel, - Retain = retain - })); + new MqttApplicationMessage + { + Topic = topic, + Payload = payloadBuffer, + QualityOfServiceLevel = qualityOfServiceLevel, + Retain = retain + }); } public static Task SubscribeAsync(this MqttServer server, string clientId, params MqttTopicFilter[] topicFilters)