private bool DeviceIsBusy(Device device) { bool busy = false; if (device.ThrottleMaxConnections != UNLIMITED) { if (_tempBlackoutDevices.ContainsKey(device.Key)) { busy = true; } else { List<Model.WorkQueue> currentMoves; using(IReadContext context = PersistentStoreRegistry.GetDefaultStore().OpenReadContext()) { currentMoves = device.GetAllCurrentMoveEntries(context); } if (currentMoves!=null && currentMoves.Count > device.ThrottleMaxConnections) { // sort the list to see where this entry is // and postpone it if its position is greater than the ThrottleMaxConnections currentMoves.Sort(delegate(Model.WorkQueue item1, Model.WorkQueue item2) { return item1.ScheduledTime.CompareTo(item2.ScheduledTime); }); int index = currentMoves.FindIndex(delegate(Model.WorkQueue item) { return item.Key.Equals(WorkQueueItem.Key); }); if (index >= device.ThrottleMaxConnections) { Platform.Log(LogLevel.Warn, "Connection limit on device {0} has been reached. Max = {1}.", device.AeTitle, device.ThrottleMaxConnections); // blackout for 5 seconds _tempBlackoutDevices.Add(device.Key, device); busy = true; } } } } return busy; }
private bool DeviceIsBusy(Device device) { bool busy = false; if (device.ThrottleMaxConnections != UNLIMITED) { if (_tempBlackoutDevices.ContainsKey(device.Key)) { busy = true; } else { List<Model.WorkQueue> currentMoves; using(IReadContext context = PersistentStoreRegistry.GetDefaultStore().OpenReadContext()) { currentMoves = device.GetAllCurrentMoveEntries(context); } if (currentMoves!=null && currentMoves.Count > device.ThrottleMaxConnections) { Platform.Log(LogLevel.Warn, "Connection limit on device {0} has been reached. Max = {1}.", device.AeTitle, device.ThrottleMaxConnections); // blackout for 5 seconds _tempBlackoutDevices.Add(device.Key, device); busy = true; } } } return busy; }