diff --git a/common/src/main/java/bisq/common/Clock.java b/common/src/main/java/bisq/common/Clock.java index fafd417e641..3383b8eba51 100644 --- a/common/src/main/java/bisq/common/Clock.java +++ b/common/src/main/java/bisq/common/Clock.java @@ -21,17 +21,24 @@ import java.util.List; import java.util.concurrent.TimeUnit; +import lombok.extern.slf4j.Slf4j; + // Helps configure listener objects that are run by the `UserThread` each second // and can do per second, per minute and delayed second actions. +@Slf4j public class Clock { - public static final int IDLE_TOLERANCE = 20000; + public static final int IDLE_TOLERANCE_MS = 20000; public interface Listener { void onSecondTick(); void onMinuteTick(); - void onMissedSecondTick(long missed); + default void onMissedSecondTick(long missedMs) { + } + + default void onAwakeFromStandby(long missedMs) { + } } private Timer timer; @@ -55,9 +62,15 @@ public void start() { long currentTimeMillis = System.currentTimeMillis(); long diff = currentTimeMillis - lastSecondTick; - if (diff > 1000) - listeners.forEach(listener -> listener.onMissedSecondTick(diff - 1000)); + if (diff > 1000) { + long missedMs = diff - 1000; + listeners.forEach(listener -> listener.onMissedSecondTick(missedMs)); + if (missedMs > Clock.IDLE_TOLERANCE_MS) { + log.info("We have been in standby mode for {} sec", missedMs / 1000); + listeners.forEach(listener -> listener.onAwakeFromStandby(missedMs)); + } + } lastSecondTick = currentTimeMillis; }, 1, TimeUnit.SECONDS); } diff --git a/core/src/main/java/bisq/core/trade/TradeManager.java b/core/src/main/java/bisq/core/trade/TradeManager.java index e2b35921976..ee05439a53e 100644 --- a/core/src/main/java/bisq/core/trade/TradeManager.java +++ b/core/src/main/java/bisq/core/trade/TradeManager.java @@ -636,10 +636,6 @@ public void onSecondTick() { public void onMinuteTick() { updateTradePeriodState(); } - - @Override - public void onMissedSecondTick(long missed) { - } }); } diff --git a/desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/steps/TradeStepView.java b/desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/steps/TradeStepView.java index ad70129497d..14c64a50b6b 100644 --- a/desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/steps/TradeStepView.java +++ b/desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/steps/TradeStepView.java @@ -149,10 +149,6 @@ public void onSecondTick() { public void onMinuteTick() { updateTimeLeft(); } - - @Override - public void onMissedSecondTick(long missed) { - } }; } diff --git a/desktop/src/main/java/bisq/desktop/main/settings/network/P2pNetworkListItem.java b/desktop/src/main/java/bisq/desktop/main/settings/network/P2pNetworkListItem.java index 79f929065f4..0c907865a9d 100644 --- a/desktop/src/main/java/bisq/desktop/main/settings/network/P2pNetworkListItem.java +++ b/desktop/src/main/java/bisq/desktop/main/settings/network/P2pNetworkListItem.java @@ -81,10 +81,6 @@ public void onSecondTick() { @Override public void onMinuteTick() { } - - @Override - public void onMissedSecondTick(long missed) { - } }; clock.addListener(listener); onLastActivityChanged(statistic.getLastActivityTimestamp()); diff --git a/p2p/src/main/java/bisq/network/p2p/peers/PeerManager.java b/p2p/src/main/java/bisq/network/p2p/peers/PeerManager.java index 3fc06e62cf8..7292866449f 100644 --- a/p2p/src/main/java/bisq/network/p2p/peers/PeerManager.java +++ b/p2p/src/main/java/bisq/network/p2p/peers/PeerManager.java @@ -151,12 +151,10 @@ public void onMinuteTick() { } @Override - public void onMissedSecondTick(long missed) { - if (missed > Clock.IDLE_TOLERANCE) { - log.info("We have been in standby mode for {} sec", missed / 1000); - stopped = false; - listeners.stream().forEach(Listener::onAwakeFromStandby); - } + public void onAwakeFromStandby(long missedMs) { + // TODO is "stopped = false;" correct? + stopped = false; + listeners.forEach(Listener::onAwakeFromStandby); } }; clock.addListener(listener);