mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-15 08:33:01 +08:00
Added reason code to MqttClientDisconnectedEventArgs and use it.
This commit is contained in:
@@ -5,11 +5,12 @@ namespace MQTTnet.Client.Disconnecting
|
||||
{
|
||||
public class MqttClientDisconnectedEventArgs : EventArgs
|
||||
{
|
||||
public MqttClientDisconnectedEventArgs(bool clientWasConnected, Exception exception, MqttClientAuthenticateResult authenticateResult)
|
||||
public MqttClientDisconnectedEventArgs(bool clientWasConnected, Exception exception, MqttClientAuthenticateResult authenticateResult, MqttClientDisconnectReason reasonCode)
|
||||
{
|
||||
ClientWasConnected = clientWasConnected;
|
||||
Exception = exception;
|
||||
AuthenticateResult = authenticateResult;
|
||||
ReasonCode = reasonCode;
|
||||
}
|
||||
|
||||
public bool ClientWasConnected { get; }
|
||||
@@ -17,5 +18,7 @@ namespace MQTTnet.Client.Disconnecting
|
||||
public Exception Exception { get; }
|
||||
|
||||
public MqttClientAuthenticateResult AuthenticateResult { get; }
|
||||
|
||||
public MqttClientDisconnectReason ReasonCode { get; set; } = MqttClientDisconnectReason.NormalDisconnection;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -309,6 +309,7 @@ namespace MQTTnet.Client
|
||||
async Task DisconnectInternalAsync(Task sender, Exception exception, MqttClientAuthenticateResult authenticateResult)
|
||||
{
|
||||
var clientWasConnected = IsConnected;
|
||||
var reasonCode = MqttClientDisconnectReason.NormalDisconnection;
|
||||
|
||||
TryInitiateDisconnect();
|
||||
_isConnected = false;
|
||||
@@ -326,6 +327,7 @@ namespace MQTTnet.Client
|
||||
catch (Exception adapterException)
|
||||
{
|
||||
_logger.Warning(adapterException, "Error while disconnecting from adapter.");
|
||||
reasonCode = MqttClientDisconnectReason.UnspecifiedError;
|
||||
}
|
||||
|
||||
try
|
||||
@@ -341,6 +343,7 @@ namespace MQTTnet.Client
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.Warning(e, "Error while waiting for internal tasks.");
|
||||
reasonCode = MqttClientDisconnectReason.ImplementationSpecificError;
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -354,7 +357,7 @@ namespace MQTTnet.Client
|
||||
{
|
||||
// This handler must be executed in a new thread because otherwise a dead lock may happen
|
||||
// when trying to reconnect in that handler etc.
|
||||
Task.Run(() => disconnectedHandler.HandleDisconnectedAsync(new MqttClientDisconnectedEventArgs(clientWasConnected, exception, authenticateResult))).Forget(_logger);
|
||||
Task.Run(() => disconnectedHandler.HandleDisconnectedAsync(new MqttClientDisconnectedEventArgs(clientWasConnected, exception, authenticateResult, reasonCode))).Forget(_logger);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user