mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-16 01:03:01 +08:00
33 lines
1.3 KiB
C#
33 lines
1.3 KiB
C#
using System;
|
|
using System.Threading.Tasks;
|
|
using MQTTnet.Client.Receiving;
|
|
|
|
namespace MQTTnet.Extensions.Rpc
|
|
{
|
|
public sealed class RpcAwareApplicationMessageReceivedHandler : IMqttApplicationMessageReceivedHandler
|
|
{
|
|
readonly Func<MqttApplicationMessageReceivedEventArgs, Task> _handleReceivedApplicationMessageAsync;
|
|
|
|
public RpcAwareApplicationMessageReceivedHandler(
|
|
IMqttApplicationMessageReceivedHandler originalHandler,
|
|
Func<MqttApplicationMessageReceivedEventArgs, Task> handleReceivedApplicationMessageAsync)
|
|
{
|
|
OriginalHandler = originalHandler;
|
|
_handleReceivedApplicationMessageAsync = handleReceivedApplicationMessageAsync ?? throw new ArgumentNullException(nameof(handleReceivedApplicationMessageAsync));
|
|
}
|
|
|
|
public IMqttApplicationMessageReceivedHandler OriginalHandler { get; }
|
|
|
|
public async Task HandleApplicationMessageReceivedAsync(MqttApplicationMessageReceivedEventArgs eventArgs)
|
|
{
|
|
// First try to check if there is a pending RPC call!
|
|
await _handleReceivedApplicationMessageAsync(eventArgs).ConfigureAwait(false);
|
|
|
|
if (OriginalHandler != null)
|
|
{
|
|
await OriginalHandler.HandleApplicationMessageReceivedAsync(eventArgs).ConfigureAwait(false);
|
|
}
|
|
}
|
|
}
|
|
}
|