Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
the java samples alias0 and alias1 are renamed autoDestination and explicitDestination
[simgrid.git] / examples / java / autoDestination / Master.java
diff --git a/examples/java/autoDestination/Master.java b/examples/java/autoDestination/Master.java
new file mode 100644 (file)
index 0000000..4df8255
--- /dev/null
@@ -0,0 +1,84 @@
+/*\r
+ * $Id: Master.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 Master extends simgrid.msg.Process \r
+{\r
+   public void main(String[] args) throws JniException, NativeException \r
+   {\r
+       \r
+               Msg.info("hello!");\r
+               \r
+               \r
+               Msg.info("argc="+args.length);\r
+               \r
+               for (int i = 0; i<args.length; i++)         \r
+                       Msg.info("argv:"+args[i]);\r
+               \r
+               if (args.length < 3) \r
+               {\r
+                       Msg.info("Master needs 3 arguments");\r
+                       System.exit(1);\r
+               }\r
+               \r
+               int taskCount = Integer.valueOf(args[0]).intValue();    \r
+                       \r
+               double taskComputeSize = Double.valueOf(args[1]).doubleValue();\r
+                               \r
+               double taskCommunicateSize = Double.valueOf(args[2]).doubleValue();\r
+               \r
+               BasicTask[] basicTasks = new BasicTask[taskCount];\r
+               \r
+               for (int i = 0; i < taskCount; i++) \r
+               {\r
+                       basicTasks[i] = new BasicTask("Task_" + i, taskComputeSize, taskCommunicateSize); \r
+               }\r
+               \r
+               int aliasCount = args.length - 3;\r
+               \r
+               String[] aliases = new String[aliasCount];\r
+               \r
+               for(int i = 3; i < args.length ; i++) \r
+                       aliases[i - 3] = args[i];\r
+               \r
+               Msg.info("Got "+  aliasCount + " alias(es) :");\r
+               \r
+               for (int i = 0; i < aliasCount; i++)\r
+                       Msg.info("\t"+ aliases[i]);\r
+               \r
+               Msg.info("Got "+ taskCount + " task to process.");\r
+               \r
+               for (int i = 0; i < taskCount; i++) \r
+               {       \r
+                       Msg.info("Sending \"" + basicTasks[i].getName()+ "\" to \"" + aliases[i % aliasCount] + "\"");\r
+                       \r
+                       if((Host.currentHost().getName()).equals((aliases[i % aliasCount].split(":"))[0]))\r
+                               Msg.info("Hey ! It's me ! ");\r
+                               \r
+                       basicTasks[i].send(aliases[i % aliasCount]);\r
+               }\r
+               \r
+               Msg.info("Send completed");\r
+               \r
+               Msg.info("All tasks have been dispatched. Let's tell everybody the computation is over.");\r
+               \r
+               FinalizeTask finalizeTask;\r
+               \r
+               for (int i = 0; i < aliasCount; i++) \r
+               {\r
+                       finalizeTask = new FinalizeTask();\r
+                       finalizeTask.send(aliases[i]);\r
+                       \r
+               }\r
+               \r
+               Msg.info("Goodbye now!");\r
+       }\r
+}\r