From 240e5e0d927a60af8f1442c0461b748244ad13b1 Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Sun, 25 Nov 2018 17:04:49 +0100 Subject: [PATCH] Add setting for online check interval --- common/src/main/java/ctbrec/Settings.java | 1 + .../java/ctbrec/recorder/LocalRecorder.java | 32 ++++++++++++------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/common/src/main/java/ctbrec/Settings.java b/common/src/main/java/ctbrec/Settings.java index e7ff8ceb..5937bee3 100644 --- a/common/src/main/java/ctbrec/Settings.java +++ b/common/src/main/java/ctbrec/Settings.java @@ -72,4 +72,5 @@ public class Settings { public int windowY; public int splitRecordings = 0; public List disabledSites = new ArrayList<>(); + public long onlineCheckIntervalInSecs = 60; } diff --git a/common/src/main/java/ctbrec/recorder/LocalRecorder.java b/common/src/main/java/ctbrec/recorder/LocalRecorder.java index 245a5a75..5587d7ab 100644 --- a/common/src/main/java/ctbrec/recorder/LocalRecorder.java +++ b/common/src/main/java/ctbrec/recorder/LocalRecorder.java @@ -9,6 +9,7 @@ import java.nio.file.Files; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; +import java.time.Duration; import java.time.Instant; import java.util.ArrayList; import java.util.Arrays; @@ -404,15 +405,14 @@ public class LocalRecorder implements Recorder { public void run() { running = true; while (running) { + Instant begin = Instant.now(); for (Model model : getModelsRecording()) { try { - if (!model.isSuspended() && !recordingProcesses.containsKey(model)) { - boolean isOnline = model.isOnline(IGNORE_CACHE); - LOG.trace("Checking online state for {}: {}", model, (isOnline ? "online" : "offline")); - if (isOnline) { - LOG.info("Model {}'s room back to public. Starting recording", model); - startRecordingProcess(model); - } + boolean isOnline = model.isOnline(IGNORE_CACHE); + LOG.trace("Checking online state for {}: {}", model, (isOnline ? "online" : "offline")); + if (isOnline && !isSuspended(model) && !recordingProcesses.containsKey(model)) { + LOG.info("Model {}'s room back to public. Starting recording", model); + startRecordingProcess(model); } } catch (HttpException e) { LOG.error("Couldn't check if model {} is online. HTTP Response: {} - {}", @@ -421,12 +421,20 @@ public class LocalRecorder implements Recorder { LOG.error("Couldn't check if model {} is online", model.getName(), e); } } + Instant end = Instant.now(); + Duration timeCheckTook = Duration.between(begin, end); - try { - if (running) - Thread.sleep(TimeUnit.SECONDS.toMillis(60)); - } catch (InterruptedException e) { - LOG.trace("Sleep interrupted"); + long sleepTime = Config.getInstance().getSettings().onlineCheckIntervalInSecs; + if(timeCheckTook.getSeconds() < sleepTime) { + try { + if (running) { + long millis = TimeUnit.SECONDS.toMillis(sleepTime - timeCheckTook.getSeconds()); + LOG.trace("Sleeping {}ms", millis); + Thread.sleep(millis); + } + } catch (InterruptedException e) { + LOG.trace("Sleep interrupted"); + } } } LOG.debug(getName() + " terminated");