Fix merge conflicts

This commit is contained in:
Christian
2022-11-13 18:41:28 +01:00
parent 2090b08547
commit 3937aa76e3
8 changed files with 48 additions and 40 deletions
@@ -39,16 +39,19 @@ namespace MQTTnet.Extensions.ManagedClient
return managedMqttClient.EnqueueAsync(applicationMessage); 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) if (managedMqttClient == null)
{ {
throw new ArgumentNullException(nameof(managedMqttClient)); 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) public static Task SubscribeAsync(this IManagedMqttClient managedMqttClient, MqttTopicFilter topicFilter)
{ {
if (managedMqttClient == null) if (managedMqttClient == null)
@@ -7,7 +7,6 @@ using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using MQTTnet.Client; using MQTTnet.Client;
using MQTTnet.Diagnostics; using MQTTnet.Diagnostics;
using MQTTnet.Implementations;
using MQTTnet.Internal; using MQTTnet.Internal;
namespace MQTTnet.Extensions.ManagedClient namespace MQTTnet.Extensions.ManagedClient
@@ -145,7 +144,7 @@ namespace MQTTnet.Extensions.ManagedClient
_workSignal.Set(); _workSignal.Set();
return PlatformAbstractionLayer.CompletedTask; return CompletedTask.Instance;
} }
public async Task StopAsync(MqttClientDisconnectOptions options, CancellationToken cancellationToken = default) public async Task StopAsync(MqttClientDisconnectOptions options, CancellationToken cancellationToken = default)
@@ -183,7 +182,7 @@ namespace MQTTnet.Extensions.ManagedClient
_subscriptionsManager.Subscribe(options); _subscriptionsManager.Subscribe(options);
_workSignal.Set(); _workSignal.Set();
return PlatformAbstractionLayer.CompletedTask; return CompletedTask.Instance;
} }
public Task UnsubscribeAsync(MqttClientUnsubscribeOptions options) public Task UnsubscribeAsync(MqttClientUnsubscribeOptions options)
@@ -193,7 +192,7 @@ namespace MQTTnet.Extensions.ManagedClient
_subscriptionsManager.Unsubscribe(options); _subscriptionsManager.Unsubscribe(options);
_workSignal.Set(); _workSignal.Set();
return PlatformAbstractionLayer.CompletedTask; return CompletedTask.Instance;
} }
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
@@ -208,7 +207,7 @@ namespace MQTTnet.Extensions.ManagedClient
Task OnInternalClientDisconnected(MqttClientDisconnectedEventArgs eventArgs) Task OnInternalClientDisconnected(MqttClientDisconnectedEventArgs eventArgs)
{ {
_workSignal.Set(); _workSignal.Set();
return PlatformAbstractionLayer.CompletedTask; return CompletedTask.Instance;
} }
async Task UpdateConnectionStatus(MaintainConnectionResult maintainConnectionResult) async Task UpdateConnectionStatus(MaintainConnectionResult maintainConnectionResult)
@@ -9,10 +9,10 @@ using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Client; using MQTTnet.Client;
using MQTTnet.Diagnostics;
using MQTTnet.Extensions.ManagedClient; using MQTTnet.Extensions.ManagedClient;
using MQTTnet.Formatter; using MQTTnet.Formatter;
using MQTTnet.Internal; using MQTTnet.Internal;
using MQTTnet.Protocol;
using MQTTnet.Server; using MQTTnet.Server;
using MQTTnet.Tests.Mockups; using MQTTnet.Tests.Mockups;
@@ -86,11 +86,9 @@ namespace MQTTnet.Tests.ManagedMqttClient
using (var testEnvironment = CreateTestEnvironment()) using (var testEnvironment = CreateTestEnvironment())
{ {
await testEnvironment.StartServer(); await testEnvironment.StartServer();
var managedClient = await testEnvironment.StartManagedClient();
await LongTestDelay(); await LongTestDelay();
var managedClient = testEnvironment.Factory.CreateManagedMqttClient(mqttClient); var managedClient = testEnvironment.Factory.CreateManagedMqttClient(testEnvironment.CreateClient());
ConnectingFailedEventArgs connectingFailedEventArgs = null; ConnectingFailedEventArgs connectingFailedEventArgs = null;
managedClient.ConnectingFailedAsync += args => managedClient.ConnectingFailedAsync += args =>
@@ -314,7 +312,6 @@ namespace MQTTnet.Tests.ManagedMqttClient
await server.InjectApplicationMessage(testEnvironment.Factory.CreateApplicationMessageBuilder().WithTopic("topic").WithPayload("payload").WithRetainFlag().Build()); await server.InjectApplicationMessage(testEnvironment.Factory.CreateApplicationMessageBuilder().WithTopic("topic").WithPayload("payload").WithRetainFlag().Build());
// Now use the managed client and check if subscriptions get cleared properly. // Now use the managed client and check if subscriptions get cleared properly.
var managedClient = testEnvironment.CreateManagedMqttClient();
var receivedManagedMessages = new List<MqttApplicationMessage>(); var receivedManagedMessages = new List<MqttApplicationMessage>();
var managedClient = testEnvironment.Factory.CreateManagedMqttClient(testEnvironment.CreateClient()); var managedClient = testEnvironment.Factory.CreateManagedMqttClient(testEnvironment.CreateClient());
@@ -453,7 +450,7 @@ namespace MQTTnet.Tests.ManagedMqttClient
managedClient.ConnectedAsync += e => managedClient.ConnectedAsync += e =>
{ {
connected.TrySetResult(true); promise.TrySetResult(true);
return CompletedTask.Instance; return CompletedTask.Instance;
}; };
@@ -7,7 +7,7 @@ using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Extensions.ManagedClient; using MQTTnet.Extensions.ManagedClient;
using MQTTnet.Implementations; using MQTTnet.Internal;
namespace MQTTnet.Tests.ManagedMqttClient namespace MQTTnet.Tests.ManagedMqttClient
{ {
@@ -27,7 +27,7 @@ namespace MQTTnet.Tests.ManagedMqttClient
managedClient.ConnectedAsync += e => managedClient.ConnectedAsync += e =>
{ {
eventFired = true; eventFired = true;
return PlatformAbstractionLayer.CompletedTask; return CompletedTask.Instance;
}; };
await managedClient.StartAsync(testEnvironment.CreateDefaultManagedMqttClientOptions()); await managedClient.StartAsync(testEnvironment.CreateDefaultManagedMqttClientOptions());
@@ -51,7 +51,7 @@ namespace MQTTnet.Tests.ManagedMqttClient
managedClient.ConnectingFailedAsync += args => managedClient.ConnectingFailedAsync += args =>
{ {
connectingFailedEventArgs = args; connectingFailedEventArgs = args;
return PlatformAbstractionLayer.CompletedTask; return CompletedTask.Instance;
}; };
await managedClient.StartAsync( await managedClient.StartAsync(
@@ -82,7 +82,7 @@ namespace MQTTnet.Tests.ManagedMqttClient
managedClient.DisconnectedAsync += e => managedClient.DisconnectedAsync += e =>
{ {
eventFired = true; eventFired = true;
return PlatformAbstractionLayer.CompletedTask; return CompletedTask.Instance;
}; };
await managedClient.StartAsync(testEnvironment.CreateDefaultManagedMqttClientOptions()); await managedClient.StartAsync(testEnvironment.CreateDefaultManagedMqttClientOptions());
@@ -110,7 +110,7 @@ namespace MQTTnet.Tests.ManagedMqttClient
managedClient.ApplicationMessageEnqueueingAsync += e => managedClient.ApplicationMessageEnqueueingAsync += e =>
{ {
eventFired = true; eventFired = true;
return PlatformAbstractionLayer.CompletedTask; return CompletedTask.Instance;
}; };
await managedClient.EnqueueAsync("A"); await managedClient.EnqueueAsync("A");
@@ -134,7 +134,7 @@ namespace MQTTnet.Tests.ManagedMqttClient
managedClient.SubscribeProcessedAsync += e => managedClient.SubscribeProcessedAsync += e =>
{ {
eventFired = e.Options.TopicFilters[0].Topic == "A"; eventFired = e.Options.TopicFilters[0].Topic == "A";
return PlatformAbstractionLayer.CompletedTask; return CompletedTask.Instance;
}; };
await managedClient.StartAsync(testEnvironment.CreateDefaultManagedMqttClientOptions()); await managedClient.StartAsync(testEnvironment.CreateDefaultManagedMqttClientOptions());
@@ -160,7 +160,7 @@ namespace MQTTnet.Tests.ManagedMqttClient
managedClient.UnsubscribeProcessedAsync += e => managedClient.UnsubscribeProcessedAsync += e =>
{ {
eventFired = e.Options.TopicFilters[0] == "A"; eventFired = e.Options.TopicFilters[0] == "A";
return PlatformAbstractionLayer.CompletedTask; return CompletedTask.Instance;
}; };
await managedClient.StartAsync(testEnvironment.CreateDefaultManagedMqttClientOptions()); await managedClient.StartAsync(testEnvironment.CreateDefaultManagedMqttClientOptions());
@@ -8,6 +8,7 @@ using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Extensions.ManagedClient; using MQTTnet.Extensions.ManagedClient;
using MQTTnet.Implementations; using MQTTnet.Implementations;
using MQTTnet.Internal;
using MQTTnet.Server; using MQTTnet.Server;
namespace MQTTnet.Tests.ManagedMqttClient namespace MQTTnet.Tests.ManagedMqttClient
@@ -93,7 +94,7 @@ namespace MQTTnet.Tests.ManagedMqttClient
managedClient.ApplicationMessageReceivedAsync += e => managedClient.ApplicationMessageReceivedAsync += e =>
{ {
applicationMessages.Add(e.ApplicationMessage); applicationMessages.Add(e.ApplicationMessage);
return PlatformAbstractionLayer.CompletedTask; return CompletedTask.Instance;
}; };
await managedClient.SubscribeAsync("B"); await managedClient.SubscribeAsync("B");
@@ -452,7 +452,7 @@ namespace MQTTnet.Tests.Mockups
ServerReceivedApplicationMessages.Add(arg.ApplicationMessage); ServerReceivedApplicationMessages.Add(arg.ApplicationMessage);
} }
return PlatformAbstractionLayer.CompletedTask; return CompletedTask.Instance;
} }
} }
} }
@@ -6,6 +6,11 @@ namespace MQTTnet.Client
{ {
public sealed class MqttClientDisconnectOptions public sealed class MqttClientDisconnectOptions
{ {
/// <summary>
/// Gets or sets whether this disconnect is a clean disconnect.
/// </summary>
public bool IsClean { get; set; }
/// <summary> /// <summary>
/// Gets or sets the reason code. /// Gets or sets the reason code.
/// Hint: MQTT 5 feature only. /// Hint: MQTT 5 feature only.
+20 -17
View File
@@ -14,6 +14,19 @@ namespace MQTTnet.Server
public static class MqttServerExtensions public static class MqttServerExtensions
{ {
public static Task InjectApplicationMessage(this MqttServer server, MqttApplicationMessage applicationMessage) 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( public static Task InjectApplicationMessage(
this MqttServer server, this MqttServer server,
string topic, string topic,
@@ -26,15 +39,6 @@ namespace MQTTnet.Server
throw new ArgumentNullException(nameof(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) if (topic == null)
{ {
throw new ArgumentNullException(nameof(topic)); throw new ArgumentNullException(nameof(topic));
@@ -47,14 +51,13 @@ namespace MQTTnet.Server
} }
return server.InjectApplicationMessage( return server.InjectApplicationMessage(
new InjectedMqttApplicationMessage( new MqttApplicationMessage
new MqttApplicationMessage {
{ Topic = topic,
Topic = topic, Payload = payloadBuffer,
Payload = payloadBuffer, QualityOfServiceLevel = qualityOfServiceLevel,
QualityOfServiceLevel = qualityOfServiceLevel, Retain = retain
Retain = retain });
}));
} }
public static Task SubscribeAsync(this MqttServer server, string clientId, params MqttTopicFilter[] topicFilters) public static Task SubscribeAsync(this MqttServer server, string clientId, params MqttTopicFilter[] topicFilters)