Add missing overloads for client disconnect.

Add timeout for disconnect in managed client.
This commit is contained in:
Christian
2021-01-30 13:17:03 +01:00
parent c91a1f8572
commit a13874d8a5
4 changed files with 32 additions and 13 deletions
@@ -292,7 +292,14 @@ namespace MQTTnet.Extensions.ManagedClient
{ {
try try
{ {
await InternalClient.DisconnectAsync().ConfigureAwait(false); using (var disconnectTimeout = new CancellationTokenSource(Options.ClientOptions.CommunicationTimeout))
{
await InternalClient.DisconnectAsync(disconnectTimeout.Token).ConfigureAwait(false);
}
}
catch (OperationCanceledException)
{
_logger.Warning("Timeout while sending DISCONNECT packet.");
} }
catch (Exception exception) catch (Exception exception)
{ {
@@ -1,6 +1,6 @@
namespace MQTTnet.Client.Disconnecting namespace MQTTnet.Client.Disconnecting
{ {
public class MqttClientDisconnectOptions public sealed class MqttClientDisconnectOptions
{ {
public MqttClientDisconnectReason ReasonCode { get; set; } = MqttClientDisconnectReason.NormalDisconnection; public MqttClientDisconnectReason ReasonCode { get; set; } = MqttClientDisconnectReason.NormalDisconnection;
+15 -8
View File
@@ -128,7 +128,21 @@ namespace MQTTnet.Client
{ {
if (client == null) throw new ArgumentNullException(nameof(client)); if (client == null) throw new ArgumentNullException(nameof(client));
return client.DisconnectAsync(new MqttClientDisconnectOptions()); return client.DisconnectAsync(CancellationToken.None);
}
public static Task DisconnectAsync(this IMqttClient client, MqttClientDisconnectOptions options)
{
if (client == null) throw new ArgumentNullException(nameof(client));
return client.DisconnectAsync(options, CancellationToken.None);
}
public static Task DisconnectAsync(this IMqttClient client, CancellationToken cancellationToken)
{
if (client == null) throw new ArgumentNullException(nameof(client));
return client.DisconnectAsync(new MqttClientDisconnectOptions(), cancellationToken);
} }
public static Task<MqttClientSubscribeResult> SubscribeAsync(this IMqttClient client, params MqttTopicFilter[] topicFilters) public static Task<MqttClientSubscribeResult> SubscribeAsync(this IMqttClient client, params MqttTopicFilter[] topicFilters)
@@ -176,13 +190,6 @@ namespace MQTTnet.Client
return client.ConnectAsync(options, CancellationToken.None); return client.ConnectAsync(options, CancellationToken.None);
} }
public static Task DisconnectAsync(this IMqttClient client, MqttClientDisconnectOptions options)
{
if (client == null) throw new ArgumentNullException(nameof(client));
return client.DisconnectAsync(options, CancellationToken.None);
}
public static Task SendExtendedAuthenticationExchangeDataAsync(this IMqttClient client, MqttExtendedAuthenticationExchangeData data) public static Task SendExtendedAuthenticationExchangeDataAsync(this IMqttClient client, MqttExtendedAuthenticationExchangeData data)
{ {
if (client == null) throw new ArgumentNullException(nameof(client)); if (client == null) throw new ArgumentNullException(nameof(client));
@@ -19,6 +19,11 @@ namespace MQTTnet.Diagnostics
logger.Publish(MqttNetLogLevel.Warning, message, parameters, exception); logger.Publish(MqttNetLogLevel.Warning, message, parameters, exception);
} }
public static void Warning(this IMqttNetScopedLogger logger, string message, params object[] parameters)
{
logger.Publish(MqttNetLogLevel.Warning, message, parameters, null);
}
public static void Error(this IMqttNetScopedLogger logger, Exception exception, string message, params object[] parameters) public static void Error(this IMqttNetScopedLogger logger, Exception exception, string message, params object[] parameters)
{ {
logger.Publish(MqttNetLogLevel.Error, message, parameters, exception); logger.Publish(MqttNetLogLevel.Error, message, parameters, exception);