diff --git a/common/src/main/java/ctbrec/Settings.java b/common/src/main/java/ctbrec/Settings.java index fcf52571..94643cdc 100644 --- a/common/src/main/java/ctbrec/Settings.java +++ b/common/src/main/java/ctbrec/Settings.java @@ -80,6 +80,7 @@ public class Settings { public boolean requireAuthentication = false; public boolean chooseStreamQuality = false; public int maximumResolution = 0; + public int concurrentRecordings = 0; public byte[] key = null; public ProxyType proxyType = ProxyType.DIRECT; public String proxyHost; diff --git a/common/src/main/java/ctbrec/recorder/LocalRecorder.java b/common/src/main/java/ctbrec/recorder/LocalRecorder.java index 814dd805..f5ab28c5 100644 --- a/common/src/main/java/ctbrec/recorder/LocalRecorder.java +++ b/common/src/main/java/ctbrec/recorder/LocalRecorder.java @@ -191,6 +191,11 @@ public class LocalRecorder implements Recorder { return; } + if(!downloadSlotAvailable()) { + LOG.info("The number of downloads is maxed out, not starting recording for {}", model); + return; + } + LOG.debug("Starting recording for model {}", model.getName()); Download download = model.createDownload(); LOG.debug("Downloading with {}", download.getClass().getSimpleName()); @@ -207,6 +212,11 @@ public class LocalRecorder implements Recorder { }.start(); } + private boolean downloadSlotAvailable() { + int concurrentRecordings = Config.getInstance().getSettings().concurrentRecordings; + return concurrentRecordings > 0 && recordingProcesses.size() < concurrentRecordings; + } + private void stopRecordingProcess(Model model) { Download download = recordingProcesses.get(model); recordingProcesses.remove(model);