in DeviceBridge/Services/ConnectionManager.cs [928:947]
private ConnectionStatusChangesHandler BuildConnectionStatusChangeHandler(string deviceId)
{
return (ConnectionStatus status, ConnectionStatusChangeReason reason) =>
{
_logger.Info("Connection status of device {deviceId} changed: status = {status}, reason = {reason}", deviceId, status, reason);
_clientStatuses.AddOrUpdate(deviceId, (status, reason), (key, oldValue) => (status, reason));
// If a custom callback exists, call it asynchronously.
if (_connectionStatusCallbacks.TryGetValue(deviceId, out var statusCallback))
{
var _ = statusCallback(status, reason).ContinueWith(t => _logger.Error(t.Exception, "Failed to execute custom connection status callback for device {deviceId}", deviceId), TaskContinuationOptions.OnlyOnFaulted);
}
// Execute the global status change handler if one was defined.
if (_globalConnectionStatusChangeHandler != null)
{
var _ = _globalConnectionStatusChangeHandler(deviceId, status, reason).ContinueWith(t => _logger.Error(t.Exception, "Failed to execute global connection status callback for device {deviceId}", deviceId), TaskContinuationOptions.OnlyOnFaulted);
}
};
}