///<inheritdoc/> public async Task <bool> RegisterDeviceForPublishingAsync(IAzureEnabledNetworkDevice azureEnabledNetworkDevice) { try { var handle = _handleFactory(azureEnabledNetworkDevice); if (await handle.Initialize().ConfigureAwait(false)) { handle.StartPublishing(); } else { _logger?.LogError( $"Failed to register device {azureEnabledNetworkDevice?.AzureDeviceParameters?.AzureDeviceId}"); return(false); } } catch (Exception e) { _logger?.LogError(e, $"Failed to register device {azureEnabledNetworkDevice?.AzureDeviceParameters?.AzureDeviceId}"); throw; } return(true); }
public AzurePublisherDeviceHandle( IAzureEnabledNetworkDevice device, ILogger <AzurePublisherDeviceHandle> logger) { _logger = logger; device.AzureDeviceParameters.AssertNotNull(); Device = device; _logger.BeginScope($"Device:{Device.AzureDeviceParameters.AzureDeviceId}"); }
///<inheritdoc/> public async Task CancelDevicePublishingAsync(IAzureEnabledNetworkDevice device) { var existingHandle = _deviceHandles.FirstOrDefault(handle => handle.Device == device); if (existingHandle is null) { throw new ArgumentException( $"Provided {nameof(device)} parameter has not been registered for publishing."); } _deviceHandles.Remove(existingHandle); await existingHandle.DisposeAsync(); }