m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java
diff options
context:
space:
mode:
authorMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2020-01-04 16:18:22 +0100
committerMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2020-01-04 16:18:22 +0100
commit237a7caa6971b67d6f98aa4f2aae3cbab7d86def (patch)
treeed29d099f90c6fbbec9821dc0f28322a32504765 /src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java
parent9be545d6f2609d5fe8143a1964d44f6eee588ea2 (diff)
Run queries on an interval
Diffstat (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java')
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java30
1 files changed, 28 insertions, 2 deletions
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java
index 70da4af..0efa710 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java
@@ -6,14 +6,19 @@ import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
+import java.util.function.Supplier;
import pl.edu.mimuw.cloudatlas.agent.NewApiImplementation;
+import pl.edu.mimuw.cloudatlas.agent.messages.RunQueriesMessage;
+import pl.edu.mimuw.cloudatlas.agent.messages.TimerSchedulerMessage;
import pl.edu.mimuw.cloudatlas.agent.messages.UpdateAttributesMessage;
import pl.edu.mimuw.cloudatlas.agent.modules.Module;
import pl.edu.mimuw.cloudatlas.agent.modules.ModuleType;
import pl.edu.mimuw.cloudatlas.agent.modules.Qurnik;
import pl.edu.mimuw.cloudatlas.agent.modules.Remik;
import pl.edu.mimuw.cloudatlas.agent.modules.Stanik;
+import pl.edu.mimuw.cloudatlas.agent.modules.RecursiveScheduledTask;
+import pl.edu.mimuw.cloudatlas.agent.modules.TimerScheduledTask;
import pl.edu.mimuw.cloudatlas.agent.modules.TimerScheduler;
import pl.edu.mimuw.cloudatlas.api.Api;
import pl.edu.mimuw.cloudatlas.interpreter.Main;
@@ -101,11 +106,30 @@ public class Agent {
}
}
+ private static void startQueries(long queriesPeriod) {
+ Supplier<TimerScheduledTask> taskSupplier = () ->
+ new TimerScheduledTask() {
+ public void run() {
+ try {
+ sendMessage(new RunQueriesMessage("", 0));
+ } catch (InterruptedException e) {
+ System.out.println("Interrupted while triggering queries");
+ }
+ }
+ };
+
+ TimerScheduledTask timerTask = new RecursiveScheduledTask(queriesPeriod, taskSupplier);
+
+ try {
+ eventBus.addMessage(new TimerSchedulerMessage("", 0, "", queriesPeriod, 0, timerTask));
+ } catch (InterruptedException e) {
+ System.out.println("Interrupted while starting queries");
+ }
+ }
+
private static void addZoneAndChildren(ZMI zmi, PathName pathName) {
try {
- System.out.println("trying to add " + pathName.toString());
UpdateAttributesMessage message = new UpdateAttributesMessage("", 0, pathName.toString(), zmi.getAttributes());
- System.out.println("added it!");
eventBus.addMessage(message);
for (ZMI son : zmi.getSons()) {
addZoneAndChildren(son, pathName.levelDown(son.getAttributes().getOrNull("name").toString()));
@@ -119,5 +143,7 @@ public class Agent {
runModulesAsThreads();
runRegistry();
initZones();
+ // TODO: make query period confiurable with config file and from tests
+ startQueries(100l);
}
}