From ca2f1ab4a37f0d590d5c116cd1fa7c341c77fad3 Mon Sep 17 00:00:00 2001 From: Marcin Chrzanowski Date: Mon, 30 Dec 2019 22:16:46 +0100 Subject: Implement modular getZoneSet --- .../java/pl/edu/mimuw/cloudatlas/agent/Agent.java | 31 +++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java') 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 392e0a1..52bd395 100644 --- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java +++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java @@ -1,22 +1,45 @@ package pl.edu.mimuw.cloudatlas.agent; +import java.rmi.registry.LocateRegistry; +import java.rmi.registry.Registry; +import java.rmi.server.UnicastRemoteObject; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import pl.edu.mimuw.cloudatlas.agent.ApiImplementation; 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.RMI; +import pl.edu.mimuw.cloudatlas.agent.modules.Remik; import pl.edu.mimuw.cloudatlas.agent.modules.Stanik; import pl.edu.mimuw.cloudatlas.agent.modules.TimerScheduler; +import pl.edu.mimuw.cloudatlas.api.Api; +import pl.edu.mimuw.cloudatlas.interpreter.Main; +import pl.edu.mimuw.cloudatlas.model.ZMI; public class Agent { + private static EventBus eventBus; + + public static void runRegistry() { + try { + ZMI root = Main.createTestHierarchy2(); + ApiImplementation api = new ApiImplementation(root); + Api apiStub = + (Api) UnicastRemoteObject.exportObject(api, 0); + Registry registry = LocateRegistry.getRegistry(); + registry.rebind("Api", apiStub); + System.out.println("Agent: api bound"); + } catch (Exception e) { + System.err.println("Agent registry initialization exception:"); + e.printStackTrace(); + } + } public static HashMap initializeModules() { HashMap modules = new HashMap(); modules.put(ModuleType.TIMER_SCHEDULER, new TimerScheduler(ModuleType.TIMER_SCHEDULER)); - modules.put(ModuleType.RMI, new RMI(ModuleType.RMI)); + modules.put(ModuleType.RMI, new Remik()); modules.put(ModuleType.STATE, new Stanik()); modules.put(ModuleType.QUERY, new Qurnik()); // TODO add modules as we implement them @@ -61,7 +84,8 @@ public class Agent { HashMap executors = initializeExecutors(modules); ArrayList executorThreads = initializeExecutorThreads(executors); - Thread eventBusThread = new Thread(new EventBus(executors)); + eventBus = new EventBus(executors); + Thread eventBusThread = new Thread(eventBus); System.out.println("Initializing event bus"); eventBusThread.start(); @@ -71,5 +95,6 @@ public class Agent { public static void main(String[] args) { runModulesAsThreads(); + runRegistry(); } } -- cgit v1.2.3 From 2b480eed536c61a5188bf671641971211269e949 Mon Sep 17 00:00:00 2001 From: Marcin Chrzanowski Date: Fri, 3 Jan 2020 16:49:08 +0100 Subject: Use new API implementation in Agent --- .../java/pl/edu/mimuw/cloudatlas/agent/Agent.java | 36 +++++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java') 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 52bd395..429346c 100644 --- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java +++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java @@ -7,7 +7,8 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Map; -import pl.edu.mimuw.cloudatlas.agent.ApiImplementation; +import pl.edu.mimuw.cloudatlas.agent.NewApiImplementation; +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; @@ -16,6 +17,7 @@ import pl.edu.mimuw.cloudatlas.agent.modules.Stanik; import pl.edu.mimuw.cloudatlas.agent.modules.TimerScheduler; import pl.edu.mimuw.cloudatlas.api.Api; import pl.edu.mimuw.cloudatlas.interpreter.Main; +import pl.edu.mimuw.cloudatlas.model.PathName; import pl.edu.mimuw.cloudatlas.model.ZMI; public class Agent { @@ -23,8 +25,7 @@ public class Agent { public static void runRegistry() { try { - ZMI root = Main.createTestHierarchy2(); - ApiImplementation api = new ApiImplementation(root); + NewApiImplementation api = new NewApiImplementation(eventBus); Api apiStub = (Api) UnicastRemoteObject.exportObject(api, 0); Registry registry = LocateRegistry.getRegistry(); @@ -89,12 +90,37 @@ public class Agent { System.out.println("Initializing event bus"); eventBusThread.start(); - System.out.println("Closing executors"); - closeExecutors(executorThreads); + // System.out.println("Closing executors"); + // closeExecutors(executorThreads); + } + + private static void initZones() { + try { + ZMI root = Main.createTestHierarchy2(); + addZoneAndChildren(root, new PathName("")); + System.out.println("Initialized with test hierarchy"); + } catch (Exception e) { + System.out.println("ERROR: failed to create test hierarchy"); + } + } + + 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())); + } + } catch (Exception e) { + System.out.println("ERROR: failed to add zone"); + } } public static void main(String[] args) { runModulesAsThreads(); runRegistry(); + initZones(); } } -- cgit v1.2.3 From 6a4ac32a2bb28fb0a5781d6756fe2be3ccc3a41c Mon Sep 17 00:00:00 2001 From: Marcin Chrzanowski Date: Fri, 3 Jan 2020 16:51:37 +0100 Subject: Cleanup --- src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java | 3 --- 1 file changed, 3 deletions(-) (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java') 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 429346c..70da4af 100644 --- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java +++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java @@ -89,9 +89,6 @@ public class Agent { Thread eventBusThread = new Thread(eventBus); System.out.println("Initializing event bus"); eventBusThread.start(); - - // System.out.println("Closing executors"); - // closeExecutors(executorThreads); } private static void initZones() { -- cgit v1.2.3