async Task OnDeviceConnectionStateChanged(DeviceConnectionStateChangedMessage message)
        {
            await _semaphoreQueue.WaitAsync();

            try
            {
                if (message.Device.IsConnected)
                {
                    // Add device if its connected and is missing from devices collection
                    AddDevice(message.Device);
                }
                else
                {
                    // Remove device from collection if its not connected
                    var device = _devices.Values.FirstOrDefault(d => d.SerialNo == message.Device.SerialNo);
                    if (device != null)
                    {
                        await RemoveDevice(device);
                    }
                }
            }
            catch (Exception ex)
            {
                _log.WriteLine(ex);
            }
            finally
            {
                _semaphoreQueue.Release();
            }
        }
Beispiel #2
0
        Task OnDeviceConnectionStateChanged(DeviceConnectionStateChangedMessage obj)
        {
            lock (filterLock)
            {
                vaultIdFilter.Remove(obj.Device.Id);
            }

            return(Task.CompletedTask);
        }