Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of scm.gforge.inria.fr:/gitroot/simgrid/simgrid into tomerge
[simgrid.git] / contrib / psg / src / example / chord / TrafficGenerator.java
1 /**\r
2  * \r
3  */\r
4 package example.chord;\r
5 \r
6 import org.simgrid.msg.Host;\r
7 \r
8 import peersim.core.*;\r
9 import peersim.config.Configuration;\r
10 import peersim.edsim.EDSimulator;\r
11 import psgsim.PSGSimulator;\r
12 \r
13 /**\r
14  * @author Andrea\r
15  * \r
16  */\r
17 public class TrafficGenerator implements Control {\r
18 \r
19         private static final String PAR_PROT = "protocol";\r
20 \r
21         private final int pid;\r
22 \r
23         /**\r
24          * \r
25          */\r
26         public TrafficGenerator(String prefix) {\r
27                 pid = Configuration.getPid(prefix + "." + PAR_PROT);\r
28         }\r
29 \r
30         /*\r
31          * (non-Javadoc)\r
32          * \r
33          * @see peersim.core.Control#execute()\r
34          */\r
35         public boolean execute() {\r
36                 int size = Network.size();\r
37                 Node sender, target;\r
38                 int i = 0;\r
39                 do {\r
40                         i++;\r
41                         sender = Network.get(CommonState.r.nextInt(size));\r
42                         target = Network.get(CommonState.r.nextInt(size));\r
43                 } while (sender == null || sender.isUp() == false || target == null\r
44                                 || target.isUp() == false);\r
45                 LookUpMessage message = new LookUpMessage(sender,\r
46                                 ((ChordProtocol) target.getProtocol(pid)).chordId);\r
47                 System.out.println("TrafficGenerator at time "+CommonState.getTime()+" Node:"\r
48                                 + message.getSender().getID() +" target "+target.getID() + " pid:"\r
49                                 + pid);\r
50                 EDSimulator.add(10, message, sender, pid);\r
51                 return false;\r
52         }\r
53 \r
54 }\r