From 8189c108befee400be89b8a0989bf367187fd375 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Magdalena=20Grodzi=C5=84ska?= <mag.grodzinska@gmail.com>
Date: Wed, 25 Dec 2019 16:06:01 +0100
Subject: Move registry binding to RMI module

---
 .../java/pl/edu/mimuw/cloudatlas/agent/Agent.java  | 26 +++------------
 .../pl/edu/mimuw/cloudatlas/agent/modules/RMI.java | 39 ++++++++++++++++++++++
 2 files changed, 43 insertions(+), 22 deletions(-)
 create mode 100644 src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/RMI.java

(limited to 'src')

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 4bd522d..4e75a51 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java
@@ -1,8 +1,5 @@
 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.Iterator;
@@ -10,29 +7,15 @@ import java.util.Map;
 
 import pl.edu.mimuw.cloudatlas.agent.messages.AgentMessage;
 import pl.edu.mimuw.cloudatlas.agent.modules.Module;
-import pl.edu.mimuw.cloudatlas.api.Api;
-import pl.edu.mimuw.cloudatlas.interpreter.Main;
-import pl.edu.mimuw.cloudatlas.model.ZMI;
+import pl.edu.mimuw.cloudatlas.agent.modules.RMI;
+import pl.edu.mimuw.cloudatlas.agent.modules.TimerScheduler;
 
 public class Agent {
 
-    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<AgentMessage.AgentModule, Module> initializeModules() {
         HashMap<AgentMessage.AgentModule, Module> modules = new HashMap<AgentMessage.AgentModule, Module>();
+        modules.put(AgentMessage.AgentModule.TIMER_SCHEDULER, new TimerScheduler(AgentMessage.AgentModule.TIMER_SCHEDULER));
+        modules.put(AgentMessage.AgentModule.RMI, new RMI(AgentMessage.AgentModule.RMI));
         // TODO add modules as we implement them
         return modules;
     }
@@ -90,7 +73,6 @@ public class Agent {
     }
 
     public static void main(String[] args) {
-        runRegistry();
         runModulesAsThreads();
     }
 }
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/RMI.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/RMI.java
new file mode 100644
index 0000000..452b214
--- /dev/null
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/RMI.java
@@ -0,0 +1,39 @@
+package pl.edu.mimuw.cloudatlas.agent.modules;
+
+import pl.edu.mimuw.cloudatlas.agent.ApiImplementation;
+import pl.edu.mimuw.cloudatlas.agent.messages.AgentMessage;
+import pl.edu.mimuw.cloudatlas.agent.messages.TimerSchedulerMessage;
+import pl.edu.mimuw.cloudatlas.api.Api;
+import pl.edu.mimuw.cloudatlas.interpreter.Main;
+import pl.edu.mimuw.cloudatlas.model.ZMI;
+
+import java.rmi.registry.LocateRegistry;
+import java.rmi.registry.Registry;
+import java.rmi.server.UnicastRemoteObject;
+
+public class RMI extends Module {
+    public RMI(AgentMessage.AgentModule moduleType) {
+        super(moduleType);
+        runRegistry();
+    }
+
+    public 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();
+        }
+    }
+
+    @Override
+    public void handle(AgentMessage event) throws InterruptedException {
+        assert event.getDestinationModule() == event.getCorrectMessageType();
+    }
+}
-- 
cgit v1.2.3