mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-27 08:42:37 +08:00
Fix merge conflicts
This commit is contained in:
@@ -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.
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user