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 / Master.java
1 /*\r
2  * $Id: Master.java 5059 2007-11-19 20:01:59Z mquinson $\r
3  *\r
4  * Copyright 2006,2007 Martin Quinson, Malek Cherier         \r
5  * All rights reserved. \r
6  *\r
7  * This program is free software; you can redistribute it and/or modify it\r
8  * under the terms of the license (GNU LGPL) which comes with this package. \r
9  */\r
10 \r
11 import simgrid.msg.*;\r
12 \r
13 public class Master extends simgrid.msg.Process \r
14 {\r
15         public void main(String[] args) throws JniException, NativeException \r
16         {\r
17                 \r
18                 Msg.info("hello!");\r
19                 \r
20                 Msg.info("argc="+args.length);\r
21                 \r
22                 for (int i = 0; i<args.length; i++)         \r
23                         Msg.info("argv:"+args[i]);\r
24                 \r
25                 if (args.length < 3) \r
26                 {\r
27                         Msg.info("Master needs 3 arguments");\r
28                         System.exit(1);\r
29                 }\r
30                 \r
31                 int numberOfTasks = Integer.valueOf(args[0]).intValue();                \r
32                 double taskComputeSize = Double.valueOf(args[1]).doubleValue();         \r
33                 double taskCommunicateSize = Double.valueOf(args[2]).doubleValue();\r
34                 BasicTask[] todo = new BasicTask[numberOfTasks];\r
35                 \r
36                 for (int i = 0; i < numberOfTasks; i++) \r
37                 {\r
38                         todo[i] = new BasicTask("Task_" + i, taskComputeSize, taskCommunicateSize); \r
39                 }\r
40                 \r
41                 int aliasCount = args.length - 3;\r
42                 String[] aliases = new String[aliasCount];\r
43                 \r
44                 for(int i = 3; i < args.length ; i++)  \r
45                 {\r
46                                 aliases[i-3] = args[i];\r
47                 }\r
48                 \r
49                 Msg.info("Got "+  aliasCount + " alias(es) :");\r
50                 \r
51                 for (int i = 0; i < aliasCount; i++)\r
52                         Msg.info("\t"+ aliases[i]);\r
53                 \r
54                 Msg.info("Got "+ numberOfTasks + " task to process.");\r
55                 \r
56                 for (int i = 0; i < numberOfTasks; i++) \r
57                 {\r
58                         Msg.info("Sending \"" + todo[i].getName()+ "\" to \"" + aliases[i % aliasCount] + "\"");\r
59                 \r
60                         if((Host.currentHost()).getName().equals(aliases[i % aliasCount])) \r
61                                 Msg.info("Hey ! It's me ! ");\r
62                                 \r
63                         todo[i].send(aliases[i % aliasCount]);\r
64                 }\r
65                 \r
66                 Msg.info("Send completed");\r
67                 \r
68                 Msg.info("All tasks have been dispatched. Let's tell everybody the computation is over.");\r
69                 \r
70                 FinalizeTask finalizeTask;\r
71                 for (int i = 0; i < aliasCount; i++) \r
72                 {\r
73                         finalizeTask = new FinalizeTask();\r
74                         \r
75                         finalizeTask.send(aliases[i]);\r
76                 }\r
77                 \r
78                 Msg.info("Goodbye now!");\r
79         }\r
80 }\r