From 136f175b12a669de976386debb17371373d68781 Mon Sep 17 00:00:00 2001 From: Hykilpikonna Date: Fri, 21 Feb 2020 14:49:56 -0500 Subject: [PATCH] [+] Create waitfor task --- .../hyritone/task/defaults/TaskWaitFor.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/main/java/org/hydev/hyritone/task/defaults/TaskWaitFor.java diff --git a/src/main/java/org/hydev/hyritone/task/defaults/TaskWaitFor.java b/src/main/java/org/hydev/hyritone/task/defaults/TaskWaitFor.java new file mode 100644 index 00000000..51960fba --- /dev/null +++ b/src/main/java/org/hydev/hyritone/task/defaults/TaskWaitFor.java @@ -0,0 +1,45 @@ +package org.hydev.hyritone.task.defaults; + +import lombok.AllArgsConstructor; +import lombok.RequiredArgsConstructor; +import org.hydev.hyritone.task.Task; +import org.hydev.hyritone.task.TaskRunState; + +import java.util.function.Function; + +import static org.hydev.hyritone.utils.MiscUtils.sleep; + +/** + * Wait for a condition to complete + *

+ * Class created by the HyDEV Team on 2020-01-25! + * + * @author HyDEV Team (https://github.com/HyDevelop) + * @author Hykilpikonna (https://github.com/hykilpikonna) + * @author Vanilla (https://github.com/VergeDX) + * @since 2020-01-25 12:29 + */ +@AllArgsConstructor +@RequiredArgsConstructor +public class TaskWaitFor implements Task +{ + private final Function condition; + private long timeout = 10 * 60 * 1000; + private long interval = 100; + + @Override + public void execute(TaskRunState state) + { + // Timeout detection + long startTime = System.currentTimeMillis(); + + // Run + while (true) + { + if (condition.apply(state)) return; + sleep(interval); + + if (System.currentTimeMillis() - startTime > timeout) return; + } + } +}