From 237a7caa6971b67d6f98aa4f2aae3cbab7d86def Mon Sep 17 00:00:00 2001 From: Marcin Chrzanowski Date: Sat, 4 Jan 2020 16:18:22 +0100 Subject: Run queries on an interval --- .../agent/modules/RecursiveScheduledTask.java | 26 ++++++++++++++++++++++ .../agent/modules/TimerScheduledTask.java | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/RecursiveScheduledTask.java (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/agent/modules') diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/RecursiveScheduledTask.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/RecursiveScheduledTask.java new file mode 100644 index 0000000..07e1fd4 --- /dev/null +++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/RecursiveScheduledTask.java @@ -0,0 +1,26 @@ +package pl.edu.mimuw.cloudatlas.agent.modules; + +import java.util.function.Supplier; + +import pl.edu.mimuw.cloudatlas.agent.messages.TimerSchedulerMessage; + +public class RecursiveScheduledTask extends TimerScheduledTask { + private long delay; + private Supplier taskSupplier; + + public RecursiveScheduledTask(long delay, Supplier taskSupplier) { + this.delay = delay; + this.taskSupplier = taskSupplier; + } + + public void run() { + try { + TimerScheduledTask task = taskSupplier.get(); + task.setScheduler(scheduler); + task.run(); + sendMessage(new TimerSchedulerMessage("", 0, "", delay, 0, new RecursiveScheduledTask(delay, taskSupplier))); + } catch (InterruptedException e) { + System.out.println("Caught interrupted exception while running RecursiveScheduledTask"); + } + } +} diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/TimerScheduledTask.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/TimerScheduledTask.java index 7a0da70..da4bd6f 100644 --- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/TimerScheduledTask.java +++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/TimerScheduledTask.java @@ -5,7 +5,7 @@ import pl.edu.mimuw.cloudatlas.agent.messages.AgentMessage; import java.util.TimerTask; public abstract class TimerScheduledTask extends TimerTask { - private TimerScheduler scheduler; + protected TimerScheduler scheduler; public abstract void run(); -- cgit v1.2.3