diff --git a/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientExtensions.cs b/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientExtensions.cs index 9a635657..f6c69a87 100644 --- a/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientExtensions.cs +++ b/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientExtensions.cs @@ -3,12 +3,39 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using MQTTnet.Client.Publishing; +using MQTTnet.Client.Receiving; using MQTTnet.Protocol; namespace MQTTnet.Extensions.ManagedClient { public static class ManagedMqttClientExtensions { + public static IManagedMqttClient UseReceivedApplicationMessageHandler(this IManagedMqttClient client, Func handler) + { + if (handler == null) + { + client.ReceivedApplicationMessageHandler = null; + return client; + } + + client.ReceivedApplicationMessageHandler = new MqttApplicationMessageHandlerDelegate(handler); + + return client; + } + + public static IManagedMqttClient UseReceivedApplicationMessageHandler(this IManagedMqttClient client, Action handler) + { + if (handler == null) + { + client.ReceivedApplicationMessageHandler = null; + return client; + } + + client.ReceivedApplicationMessageHandler = new MqttApplicationMessageHandlerDelegate(handler); + + return client; + } + public static Task SubscribeAsync(this IManagedMqttClient managedClient, params TopicFilter[] topicFilters) { if (managedClient == null) throw new ArgumentNullException(nameof(managedClient));