From f54dc2ff738b423b89bd53cca03532d84a07a6f7 Mon Sep 17 00:00:00 2001 From: Alexander Bielen Date: Wed, 24 Oct 2018 19:38:58 +0200 Subject: [PATCH] Added conditional sleep with minimum timeout --- .../parabot/environment/api/utils/Time.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/java/org/parabot/environment/api/utils/Time.java b/src/main/java/org/parabot/environment/api/utils/Time.java index 5418f42..29b5ad7 100644 --- a/src/main/java/org/parabot/environment/api/utils/Time.java +++ b/src/main/java/org/parabot/environment/api/utils/Time.java @@ -53,6 +53,30 @@ public final class Time { return true; } + /** + * Sleeps until SleepCondition is valid, but with a minimum timeout. + * + * @param conn the condition. + * @param timeout the time in milliseconds before it stops sleeping. + * @param minimumTimeout the minimum time to sleep. + * + * @return whether it ran successfully without timing out. + */ + public static boolean sleep(SleepCondition conn, int timeout, int minimumTimeout) { + long start = System.currentTimeMillis(); + while (!conn.isValid()) { + if (start + timeout < System.currentTimeMillis()) { + return false; + } + Time.sleep(50); + } + long t; + if((t = System.currentTimeMillis() - start) < minimumTimeout) { + Time.sleep((int)(minimumTimeout - t)); + } + return true; + } + /** * Gets current time in milliseconds *