mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-15 00:15:15 +08:00
39 lines
1.2 KiB
C#
39 lines
1.2 KiB
C#
using System.Threading.Tasks;
|
|
using MQTTnet.Client;
|
|
using MQTTnet.Server;
|
|
|
|
namespace MQTTnet.Tests.Mockups
|
|
{
|
|
public static class TestServerExtensions
|
|
{
|
|
/// <summary>
|
|
/// publishes a message with a client and waits in the server until a message with the same topic is received
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static async Task PublishAndWaitForAsync(this IMqttClient client, IMqttServer server, MqttApplicationMessage message)
|
|
{
|
|
var tcs = new TaskCompletionSource<object>();
|
|
|
|
void Handler(object sender, MqttApplicationMessageReceivedEventArgs args)
|
|
{
|
|
if (args.ApplicationMessage.Topic == message.Topic)
|
|
{
|
|
tcs.SetResult(true);
|
|
}
|
|
}
|
|
|
|
server.ApplicationMessageReceived += Handler;
|
|
|
|
try
|
|
{
|
|
await client.PublishAsync(message).ConfigureAwait(false);
|
|
await tcs.Task.ConfigureAwait(false);
|
|
}
|
|
finally
|
|
{
|
|
server.ApplicationMessageReceived -= Handler;
|
|
}
|
|
}
|
|
}
|
|
}
|