Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Usage of xbt_new0 instead calloc
[simgrid.git] / examples / java / alias1 / Forwarder.java
1 /*\r
2  * $Id: Forwarder.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 Forwarder extends simgrid.msg.Process \r
14 {\r
15     \r
16         public void main(String[] args) throws JniException, NativeException \r
17         {\r
18                 Msg.info("hello!");\r
19                 \r
20                 int aliasCount = args.length;\r
21                 String[] aliases = new String[aliasCount];\r
22                 \r
23                 for (int i = 0; i < args.length; i++) \r
24                 {             \r
25                         aliases[i] = args[i];\r
26                 }\r
27                 \r
28                 int taskCount = 0;\r
29                 \r
30                 Task receivedTask;\r
31                 FinalizeTask finalizeTask;\r
32                 BasicTask task;\r
33                 \r
34                 while(true) \r
35                 {\r
36                         receivedTask = Task.receive(Host.currentHost().getName());      \r
37                         \r
38                         if(receivedTask instanceof FinalizeTask) \r
39                         {\r
40                                 Msg.info("All tasks have been dispatched. Let's tell everybody the computation is over.");\r
41                 \r
42                                 for (int cpt = 0; cpt < aliasCount; cpt++) \r
43                                 {\r
44                                         finalizeTask = new FinalizeTask();\r
45                                         finalizeTask.send(aliases[cpt]);\r
46                                 }\r
47                                 \r
48                                 break;\r
49                         }\r
50                 \r
51                         task = (BasicTask)receivedTask;\r
52                         \r
53                         Msg.info("Received \"" + task.getName() + "\" ");\r
54                         \r
55                         Msg.info("Sending \"" + task.getName() + "\" to \"" + aliases[taskCount % aliasCount] + "\"");\r
56                         \r
57                         task.send(aliases[taskCount % aliasCount]);\r
58                         \r
59                         taskCount++;\r
60                 }\r
61                 \r
62                 \r
63                 Msg.info("I'm done. See you!");\r
64         }\r
65 }\r
66 \r