From c6389b94819adb1a96cb982a562e4d6e7820f09e Mon Sep 17 00:00:00 2001 From: reusedname <155286845+reusedname@users.noreply.github.com> Date: Mon, 24 Feb 2025 22:32:13 +0500 Subject: [PATCH] Extract unchecked model state from unknown Allows to know if online check was run or not --- client/src/main/java/ctbrec/ui/event/ShowNotification.java | 2 +- common/src/main/java/ctbrec/AbstractModel.java | 2 +- common/src/main/java/ctbrec/Model.java | 3 ++- common/src/main/java/ctbrec/recorder/OnlineMonitor.java | 4 ++-- .../src/main/java/ctbrec/sites/amateurtv/AmateurTvModel.java | 2 +- common/src/main/java/ctbrec/sites/cam4/Cam4Model.java | 3 ++- common/src/main/java/ctbrec/sites/camsoda/CamsodaModel.java | 2 +- .../main/java/ctbrec/sites/chaturbate/ChaturbateModel.java | 4 ++-- common/src/main/java/ctbrec/sites/dreamcam/DreamcamModel.java | 2 +- common/src/main/java/ctbrec/sites/fc2live/Fc2Model.java | 2 +- common/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java | 2 +- .../src/main/java/ctbrec/sites/streamate/StreamateModel.java | 2 +- .../src/main/java/ctbrec/sites/streamray/StreamrayModel.java | 2 +- common/src/main/java/ctbrec/sites/winktv/WinkTvModel.java | 2 +- common/src/main/java/ctbrec/sites/xlovecam/XloveCamModel.java | 2 +- 15 files changed, 19 insertions(+), 17 deletions(-) diff --git a/client/src/main/java/ctbrec/ui/event/ShowNotification.java b/client/src/main/java/ctbrec/ui/event/ShowNotification.java index 52107b6b..7333f7f0 100644 --- a/client/src/main/java/ctbrec/ui/event/ShowNotification.java +++ b/client/src/main/java/ctbrec/ui/event/ShowNotification.java @@ -22,7 +22,7 @@ public class ShowNotification extends Action { switch(evt.getType()) { case MODEL_STATUS_CHANGED: ModelStateChangedEvent modelEvent = (ModelStateChangedEvent) evt; - if (modelEvent.getOldState() == Model.State.UNKNOWN) { + if (modelEvent.getOldState() == Model.State.UNCHECKED) { return; } var m = modelEvent.getModel(); diff --git a/common/src/main/java/ctbrec/AbstractModel.java b/common/src/main/java/ctbrec/AbstractModel.java index 26f36b2c..8c766361 100644 --- a/common/src/main/java/ctbrec/AbstractModel.java +++ b/common/src/main/java/ctbrec/AbstractModel.java @@ -33,7 +33,7 @@ public abstract class AbstractModel implements Model { private boolean forcePriority = false; private boolean markedForLaterRecording = false; protected transient Site site; - protected State onlineState = State.UNKNOWN; + protected State onlineState = State.UNCHECKED; private Instant lastSeen; private Instant lastRecorded; private Instant recordUntil; diff --git a/common/src/main/java/ctbrec/Model.java b/common/src/main/java/ctbrec/Model.java index 4563bf08..c02496e9 100644 --- a/common/src/main/java/ctbrec/Model.java +++ b/common/src/main/java/ctbrec/Model.java @@ -26,7 +26,8 @@ public interface Model extends Comparable, Serializable { AWAY("away"), PRIVATE("private"), GROUP("group"), - UNKNOWN("unknown"); + UNKNOWN("unknown"), + UNCHECKED("unchecked"); final String display; diff --git a/common/src/main/java/ctbrec/recorder/OnlineMonitor.java b/common/src/main/java/ctbrec/recorder/OnlineMonitor.java index 5d8393b3..0d7332b0 100644 --- a/common/src/main/java/ctbrec/recorder/OnlineMonitor.java +++ b/common/src/main/java/ctbrec/recorder/OnlineMonitor.java @@ -21,7 +21,7 @@ import java.util.Map; import java.util.concurrent.*; import static ctbrec.Model.State.OFFLINE; -import static ctbrec.Model.State.UNKNOWN; +import static ctbrec.Model.State.UNCHECKED; public class OnlineMonitor extends Thread { private static final Logger LOG = LoggerFactory.getLogger(OnlineMonitor.class); @@ -101,7 +101,7 @@ public class OnlineMonitor extends Thread { } private void setModelStateNotified(Model model, Model.State state) { - Model.State oldState = states.getOrDefault(model, UNKNOWN); + Model.State oldState = states.getOrDefault(model, UNCHECKED); states.put(model, state); if (state != oldState) { EventBusHolder.BUS.post(new ModelStateChangedEvent(model, oldState, state)); diff --git a/common/src/main/java/ctbrec/sites/amateurtv/AmateurTvModel.java b/common/src/main/java/ctbrec/sites/amateurtv/AmateurTvModel.java index 613e9fdd..352b542b 100644 --- a/common/src/main/java/ctbrec/sites/amateurtv/AmateurTvModel.java +++ b/common/src/main/java/ctbrec/sites/amateurtv/AmateurTvModel.java @@ -55,7 +55,7 @@ public class AmateurTvModel extends AbstractModel { @Override public State getOnlineState(boolean failFast) throws IOException, ExecutionException { - if (!failFast || onlineState == UNKNOWN) { + if (!failFast || onlineState == UNKNOWN || onlineState == UNCHECKED) { try { onlineState = isOnline(true) ? ONLINE : OFFLINE; } catch (InterruptedException e) { diff --git a/common/src/main/java/ctbrec/sites/cam4/Cam4Model.java b/common/src/main/java/ctbrec/sites/cam4/Cam4Model.java index 981688a6..f8d87782 100644 --- a/common/src/main/java/ctbrec/sites/cam4/Cam4Model.java +++ b/common/src/main/java/ctbrec/sites/cam4/Cam4Model.java @@ -86,7 +86,8 @@ public class Cam4Model extends AbstractModel { @Override public State getOnlineState(boolean failFast) throws IOException, ExecutionException { - if (!failFast && onlineState == UNKNOWN) { + // TODO: should it be !failFast || onlineState ? as in AbstractHlsModel + if (!failFast && (onlineState == UNKNOWN || onlineState == UNCHECKED)) { try { modelInfo = loadModelInfo(); } catch (Exception e) { diff --git a/common/src/main/java/ctbrec/sites/camsoda/CamsodaModel.java b/common/src/main/java/ctbrec/sites/camsoda/CamsodaModel.java index 2ef378e8..83c864c5 100644 --- a/common/src/main/java/ctbrec/sites/camsoda/CamsodaModel.java +++ b/common/src/main/java/ctbrec/sites/camsoda/CamsodaModel.java @@ -205,7 +205,7 @@ public class CamsodaModel extends AbstractModel { @Override public State getOnlineState(boolean failFast) throws IOException, ExecutionException { - if (!failFast && onlineState == UNKNOWN) { + if (!failFast && (onlineState == UNKNOWN || onlineState == UNCHECKED)) { loadModel(); } return onlineState; diff --git a/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateModel.java b/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateModel.java index d1dad529..39d27a61 100644 --- a/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateModel.java +++ b/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateModel.java @@ -145,10 +145,10 @@ public class ChaturbateModel extends AbstractModel { @Override public State getOnlineState(boolean failFast) throws IOException, ExecutionException { if (failFast) { - if (onlineState != UNKNOWN) { + if (onlineState != UNCHECKED) { return onlineState; } else { - setOnlineStateByRoomStatus(Optional.ofNullable(streamInfo).map(si -> si.room_status).orElse("unknown")); + setOnlineStateByRoomStatus(Optional.ofNullable(streamInfo).map(si -> si.room_status).orElse(null)); } } else { if (isOffline()) { diff --git a/common/src/main/java/ctbrec/sites/dreamcam/DreamcamModel.java b/common/src/main/java/ctbrec/sites/dreamcam/DreamcamModel.java index c355a482..6115cd22 100644 --- a/common/src/main/java/ctbrec/sites/dreamcam/DreamcamModel.java +++ b/common/src/main/java/ctbrec/sites/dreamcam/DreamcamModel.java @@ -62,7 +62,7 @@ public class DreamcamModel extends AbstractModel { @Override public State getOnlineState(boolean failFast) throws IOException, ExecutionException { - if (failFast && onlineState != UNKNOWN) { + if (failFast && onlineState != UNKNOWN && onlineState != UNCHECKED) { return onlineState; } else { try { diff --git a/common/src/main/java/ctbrec/sites/fc2live/Fc2Model.java b/common/src/main/java/ctbrec/sites/fc2live/Fc2Model.java index 4c3b4f97..e6aa7c2b 100644 --- a/common/src/main/java/ctbrec/sites/fc2live/Fc2Model.java +++ b/common/src/main/java/ctbrec/sites/fc2live/Fc2Model.java @@ -96,7 +96,7 @@ public class Fc2Model extends AbstractModel { public State getOnlineState(boolean failFast) throws IOException, ExecutionException { if (failFast) { return onlineState; - } else if (Objects.equals(onlineState, State.UNKNOWN)) { + } else if (onlineState == State.UNKNOWN || onlineState == State.UNCHECKED) { loadModelInfo(); } return onlineState; diff --git a/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java b/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java index 1ab56e8b..c0455956 100644 --- a/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java +++ b/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java @@ -82,7 +82,7 @@ public class MyFreeCamsModel extends AbstractModel { @Override public State getOnlineState(boolean failFast) throws IOException, ExecutionException { if (state == null) { - return State.UNKNOWN; + return State.UNCHECKED; } if (!failFast) { diff --git a/common/src/main/java/ctbrec/sites/streamate/StreamateModel.java b/common/src/main/java/ctbrec/sites/streamate/StreamateModel.java index dede64a0..69ac6575 100644 --- a/common/src/main/java/ctbrec/sites/streamate/StreamateModel.java +++ b/common/src/main/java/ctbrec/sites/streamate/StreamateModel.java @@ -61,7 +61,7 @@ public class StreamateModel extends AbstractModel { @Override public State getOnlineState(boolean failFast) throws IOException, ExecutionException { - if (!failFast && onlineState == UNKNOWN) { + if (!failFast && (onlineState == UNKNOWN || onlineState == UNCHECKED)) { return online ? ONLINE : OFFLINE; } return onlineState; diff --git a/common/src/main/java/ctbrec/sites/streamray/StreamrayModel.java b/common/src/main/java/ctbrec/sites/streamray/StreamrayModel.java index f5d1b4c4..7b294a66 100644 --- a/common/src/main/java/ctbrec/sites/streamray/StreamrayModel.java +++ b/common/src/main/java/ctbrec/sites/streamray/StreamrayModel.java @@ -70,7 +70,7 @@ public class StreamrayModel extends AbstractModel { @Override public State getOnlineState(boolean failFast) throws IOException, ExecutionException { - if (!failFast || onlineState == UNKNOWN) { + if (!failFast || onlineState == UNKNOWN || onlineState == UNCHECKED) { try { onlineState = isOnline(true) ? ONLINE : OFFLINE; } catch (InterruptedException e) { diff --git a/common/src/main/java/ctbrec/sites/winktv/WinkTvModel.java b/common/src/main/java/ctbrec/sites/winktv/WinkTvModel.java index e61ba7d9..46233dc1 100644 --- a/common/src/main/java/ctbrec/sites/winktv/WinkTvModel.java +++ b/common/src/main/java/ctbrec/sites/winktv/WinkTvModel.java @@ -71,7 +71,7 @@ public class WinkTvModel extends AbstractModel { @Override public State getOnlineState(boolean failFast) throws IOException, ExecutionException { - if (!failFast || onlineState == UNKNOWN) { + if (!failFast || onlineState == UNKNOWN || onlineState == UNCHECKED) { try { onlineState = isOnline(true) ? ONLINE : OFFLINE; } catch (InterruptedException e) { diff --git a/common/src/main/java/ctbrec/sites/xlovecam/XloveCamModel.java b/common/src/main/java/ctbrec/sites/xlovecam/XloveCamModel.java index 69d05257..ff0a4aee 100644 --- a/common/src/main/java/ctbrec/sites/xlovecam/XloveCamModel.java +++ b/common/src/main/java/ctbrec/sites/xlovecam/XloveCamModel.java @@ -47,7 +47,7 @@ public class XloveCamModel extends AbstractModel { @Override public State getOnlineState(boolean failFast) throws IOException, ExecutionException { - if (!failFast || onlineState == UNKNOWN) { + if (!failFast || onlineState == UNKNOWN || onlineState == UNCHECKED) { try { onlineState = isOnline(true) ? ONLINE : OFFLINE; } catch (InterruptedException e) {