Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
The java examples to illustrate the usage of the mailbox concept.
[simgrid.git] / examples / java / alias1 / Forwarder.java
diff --git a/examples/java/alias1/Forwarder.java b/examples/java/alias1/Forwarder.java
new file mode 100644 (file)
index 0000000..d33e8d8
--- /dev/null
@@ -0,0 +1,66 @@
+/*\r
+ * $Id: Forwarder.java 5059 2007-11-19 20:01:59Z mquinson $\r
+ *\r
+ * Copyright 2006,2007 Martin Quinson, Malek Cherier         \r
+ * All rights reserved. \r
+ *\r
+ * This program is free software; you can redistribute it and/or modify it\r
+ * under the terms of the license (GNU LGPL) which comes with this package. \r
+ */\r
+\r
+import simgrid.msg.*;\r
+\r
+public class Forwarder extends simgrid.msg.Process \r
+{\r
+    \r
+       public void main(String[] args) throws JniException, NativeException \r
+       {\r
+               Msg.info("hello!");\r
+               \r
+               int aliasCount = args.length;\r
+               String[] aliases = new String[aliasCount];\r
+               \r
+               for (int i = 0; i < args.length; i++) \r
+               {             \r
+                       aliases[i] = args[i];\r
+               }\r
+               \r
+               int taskCount = 0;\r
+               \r
+               Task receivedTask;\r
+               FinalizeTask finalizeTask;\r
+               BasicTask task;\r
+               \r
+               while(true) \r
+               {\r
+                       receivedTask = Task.receive(Host.currentHost().getName());      \r
+                       \r
+                       if(receivedTask instanceof FinalizeTask) \r
+                       {\r
+                               Msg.info("All tasks have been dispatched. Let's tell everybody the computation is over.");\r
+               \r
+                               for (int cpt = 0; cpt < aliasCount; cpt++) \r
+                               {\r
+                                       finalizeTask = new FinalizeTask();\r
+                                       finalizeTask.send(aliases[cpt]);\r
+                               }\r
+                               \r
+                               break;\r
+                       }\r
+               \r
+                       task = (BasicTask)receivedTask;\r
+                       \r
+                       Msg.info("Received \"" + task.getName() + "\" ");\r
+                       \r
+                       Msg.info("Sending \"" + task.getName() + "\" to \"" + aliases[taskCount % aliasCount] + "\"");\r
+                       \r
+                       task.send(aliases[taskCount % aliasCount]);\r
+                       \r
+                       taskCount++;\r
+               }\r
+               \r
+               \r
+               Msg.info("I'm done. See you!");\r
+       }\r
+}\r
+\r