mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-21 04:03:05 +08:00
Enable nullable
This commit is contained in:
@@ -12,7 +12,12 @@ namespace MQTTnet.Extensions.Rpc;
|
||||
|
||||
public interface IMqttRpcClient : IDisposable
|
||||
{
|
||||
Task<byte[]> ExecuteAsync(TimeSpan timeout, string methodName, byte[] payload, MqttQualityOfServiceLevel qualityOfServiceLevel, IDictionary<string,object> parameters = null);
|
||||
Task<byte[]> ExecuteAsync(TimeSpan timeout, string methodName, byte[] payload, MqttQualityOfServiceLevel qualityOfServiceLevel, IDictionary<string, object>? parameters = null);
|
||||
|
||||
Task<byte[]> ExecuteAsync(string methodName, byte[] payload, MqttQualityOfServiceLevel qualityOfServiceLevel, IDictionary<string, object> parameters = null, CancellationToken cancellationToken = default);
|
||||
Task<byte[]> ExecuteAsync(
|
||||
string methodName,
|
||||
byte[] payload,
|
||||
MqttQualityOfServiceLevel qualityOfServiceLevel,
|
||||
IDictionary<string, object>? parameters = null,
|
||||
CancellationToken cancellationToken = default);
|
||||
}
|
||||
@@ -37,6 +37,8 @@
|
||||
<NuGetAuditLevel>low</NuGetAuditLevel>
|
||||
<AnalysisLevel>latest-Recommended</AnalysisLevel>
|
||||
<IsAotCompatible>true</IsAotCompatible>
|
||||
<LangVersion>default</LangVersion>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -20,7 +20,7 @@ public sealed class MqttRpcClient : IMqttRpcClient
|
||||
readonly IMqttClient _mqttClient;
|
||||
readonly MqttRpcClientOptions _options;
|
||||
|
||||
readonly ConcurrentDictionary<string, AsyncTaskCompletionSource<byte[]>> _waitingCalls = new ConcurrentDictionary<string, AsyncTaskCompletionSource<byte[]>>();
|
||||
readonly ConcurrentDictionary<string, AsyncTaskCompletionSource<byte[]>> _waitingCalls = new();
|
||||
|
||||
public MqttRpcClient(IMqttClient mqttClient, MqttRpcClientOptions options)
|
||||
{
|
||||
@@ -42,7 +42,12 @@ public sealed class MqttRpcClient : IMqttRpcClient
|
||||
_waitingCalls.Clear();
|
||||
}
|
||||
|
||||
public async Task<byte[]> ExecuteAsync(TimeSpan timeout, string methodName, byte[] payload, MqttQualityOfServiceLevel qualityOfServiceLevel, IDictionary<string, object> parameters = null)
|
||||
public async Task<byte[]> ExecuteAsync(
|
||||
TimeSpan timeout,
|
||||
string methodName,
|
||||
byte[] payload,
|
||||
MqttQualityOfServiceLevel qualityOfServiceLevel,
|
||||
IDictionary<string, object>? parameters = null)
|
||||
{
|
||||
using var timeoutToken = new CancellationTokenSource(timeout);
|
||||
try
|
||||
@@ -60,7 +65,12 @@ public sealed class MqttRpcClient : IMqttRpcClient
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<byte[]> ExecuteAsync(string methodName, byte[] payload, MqttQualityOfServiceLevel qualityOfServiceLevel, IDictionary<string, object> parameters = null, CancellationToken cancellationToken = default)
|
||||
public async Task<byte[]> ExecuteAsync(
|
||||
string methodName,
|
||||
byte[] payload,
|
||||
MqttQualityOfServiceLevel qualityOfServiceLevel,
|
||||
IDictionary<string, object>? parameters = null,
|
||||
CancellationToken cancellationToken = default)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(methodName);
|
||||
|
||||
@@ -82,7 +92,7 @@ public sealed class MqttRpcClient : IMqttRpcClient
|
||||
|
||||
var requestMessageBuilder = new MqttApplicationMessageBuilder().WithTopic(requestTopic).WithPayload(payload).WithQualityOfServiceLevel(qualityOfServiceLevel);
|
||||
|
||||
if (_mqttClient.Options.ProtocolVersion == MqttProtocolVersion.V500)
|
||||
if (_mqttClient.Options!.ProtocolVersion == MqttProtocolVersion.V500)
|
||||
{
|
||||
requestMessageBuilder.WithResponseTopic(responseTopic);
|
||||
}
|
||||
@@ -103,11 +113,10 @@ public sealed class MqttRpcClient : IMqttRpcClient
|
||||
await _mqttClient.SubscribeAsync(subscribeOptions, cancellationToken).ConfigureAwait(false);
|
||||
await _mqttClient.PublishAsync(requestMessage, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
using (cancellationToken.Register(
|
||||
() =>
|
||||
{
|
||||
awaitable.TrySetCanceled();
|
||||
}))
|
||||
using (cancellationToken.Register(() =>
|
||||
{
|
||||
awaitable.TrySetCanceled();
|
||||
}))
|
||||
{
|
||||
return await awaitable.Task.ConfigureAwait(false);
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace MQTTnet.Extensions.Rpc;
|
||||
|
||||
public static class MqttRpcClientExtensions
|
||||
{
|
||||
public static Task<byte[]> ExecuteAsync(this IMqttRpcClient client, TimeSpan timeout, string methodName, string payload, MqttQualityOfServiceLevel qualityOfServiceLevel, IDictionary<string,object> parameters = null)
|
||||
public static Task<byte[]> ExecuteAsync(this IMqttRpcClient client, TimeSpan timeout, string methodName, string payload, MqttQualityOfServiceLevel qualityOfServiceLevel, IDictionary<string,object>? parameters = null)
|
||||
{
|
||||
if (client == null) throw new ArgumentNullException(nameof(client));
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ namespace MQTTnet.Extensions.Rpc;
|
||||
|
||||
public sealed class MqttRpcTopicPair
|
||||
{
|
||||
public string RequestTopic { get; set; }
|
||||
public required string RequestTopic { get; init; }
|
||||
|
||||
public string ResponseTopic { get; set; }
|
||||
public required string ResponseTopic { get; init; }
|
||||
}
|
||||
@@ -10,8 +10,12 @@ namespace MQTTnet.Extensions.Rpc;
|
||||
|
||||
public sealed class TopicGenerationContext
|
||||
{
|
||||
public TopicGenerationContext(IMqttClient mqttClient, MqttRpcClientOptions options, string methodName,
|
||||
IDictionary<string, object> parameters, MqttQualityOfServiceLevel qualityOfServiceLevel)
|
||||
public TopicGenerationContext(
|
||||
IMqttClient mqttClient,
|
||||
MqttRpcClientOptions options,
|
||||
string methodName,
|
||||
IDictionary<string, object>? parameters,
|
||||
MqttQualityOfServiceLevel qualityOfServiceLevel)
|
||||
{
|
||||
MethodName = methodName ?? throw new ArgumentNullException(nameof(methodName));
|
||||
Parameters = parameters;
|
||||
@@ -22,12 +26,12 @@ public sealed class TopicGenerationContext
|
||||
|
||||
public string MethodName { get; }
|
||||
|
||||
public IDictionary<string, object> Parameters { get; }
|
||||
|
||||
public IMqttClient MqttClient { get; }
|
||||
|
||||
public MqttRpcClientOptions Options { get; }
|
||||
|
||||
public IDictionary<string, object>? Parameters { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the quality of service level.
|
||||
/// The Quality of Service (QoS) level is an agreement between the sender of a message and the receiver of a message
|
||||
|
||||
Reference in New Issue
Block a user