Add async handler interfaces for connected and disconnected to allow async code to execute on connect

This commit is contained in:
Dominik Psenner
2019-02-15 15:02:15 +01:00
parent 6c5c9e5bf2
commit a1f414a06d
8 changed files with 129 additions and 10 deletions
+8 -1
View File
@@ -44,8 +44,12 @@ namespace MQTTnet.Client
_logger = logger.CreateChildLogger(nameof(MqttClient));
}
public IMqttClientConnectedHandler ConnectedHandler { get; set; }
public event EventHandler<MqttClientConnectedEventArgs> Connected;
public IMqttClientDisconnectedHandler DisconnectedHandler { get; set; }
public event EventHandler<MqttClientDisconnectedEventArgs> Disconnected;
public IMqttApplicationMessageHandler ReceivedApplicationMessageHandler { get; set; }
@@ -93,10 +97,12 @@ namespace MQTTnet.Client
}
IsConnected = true;
Connected?.Invoke(this, new MqttClientConnectedEventArgs(authenticateResult));
_logger.Info("Connected.");
Connected?.Invoke(this, new MqttClientConnectedEventArgs(authenticateResult));
await ConnectedHandler?.HandleConnectedAsync(new MqttClientConnectedEventArgs(authenticateResult));
return authenticateResult;
}
catch (Exception exception)
@@ -259,6 +265,7 @@ namespace MQTTnet.Client
_logger.Info("Disconnected.");
Disconnected?.Invoke(this, new MqttClientDisconnectedEventArgs(clientWasConnected, exception));
await DisconnectedHandler?.HandleDisconnectedAsync(new MqttClientDisconnectedEventArgs(clientWasConnected, exception));
}
}