public void BindDeviceProxy(IIdentity identity, IDeviceProxy deviceProxy) { ConnectedDevice device = this.GetOrCreateConnectedDevice(Preconditions.CheckNotNull(identity, nameof(identity))); device.UpdateDeviceProxy(Preconditions.CheckNotNull(deviceProxy, nameof(deviceProxy))); Events.BindDeviceProxy(identity); }
public async Task AddDeviceConnection(IIdentity identity, IDeviceProxy deviceProxy) { ConnectedDevice device = this.GetOrCreateConnectedDevice(Preconditions.CheckNotNull(identity, nameof(identity))); Option <IDeviceProxy> currentDeviceProxy = device.UpdateDeviceProxy(Preconditions.CheckNotNull(deviceProxy, nameof(deviceProxy))); Events.NewDeviceConnection(identity); await currentDeviceProxy .Filter(dp => dp.IsActive) .ForEachAsync(dp => dp.CloseAsync(new MultipleConnectionsException($"Multiple connections detected for device {identity.Id}"))); this.DeviceConnected?.Invoke(this, identity); }