Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 

39 řádky
1.1 KiB

  1. using System.Threading.Tasks;
  2. using MQTTnet.Client;
  3. using MQTTnet.Server;
  4. namespace MQTTnet.Tests
  5. {
  6. public static class TestServerExtensions
  7. {
  8. /// <summary>
  9. /// publishes a message with a client and waits in the server until a message with the same topic is received
  10. /// </summary>
  11. /// <returns></returns>
  12. public static async Task PublishAndWaitForAsync(this IMqttClient client, IMqttServer server, MqttApplicationMessage message)
  13. {
  14. var tcs = new TaskCompletionSource<object>();
  15. void Handler(object sender, MqttApplicationMessageReceivedEventArgs args)
  16. {
  17. if (args.ApplicationMessage.Topic == message.Topic)
  18. {
  19. tcs.SetResult(true);
  20. }
  21. }
  22. server.ApplicationMessageReceived += Handler;
  23. try
  24. {
  25. await client.PublishAsync(message).ConfigureAwait(false);
  26. await tcs.Task.ConfigureAwait(false);
  27. }
  28. finally
  29. {
  30. server.ApplicationMessageReceived -= Handler;
  31. }
  32. }
  33. }
  34. }