1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package jgroup.relacs.simulator;
20
21 import java.io.BufferedReader;
22 import java.io.FileReader;
23 import java.net.InetAddress;
24 import java.util.ArrayList;
25 import java.util.Iterator;
26 import java.util.List;
27
28 import jgroup.core.ConfigManager;
29 import jgroup.core.registry.BootstrapRegistry;
30
31
32
33
34
35
36
37
38
39
40
41
42 public class Simulator
43 {
44
45
46
47
48
49
50 public static void main(String[] argv)
51 {
52 InetAddress inet;
53 int prob;
54 SocketStatus status;
55
56 try {
57 ConfigManager.init();
58 if (argv.length == 0)
59 throw new IllegalArgumentException("Wrong number of arguments");
60 BufferedReader in = new BufferedReader(new FileReader(argv[0]));
61 String line = null;
62 int start, stop;
63 List<SocketStatus> hosts = new ArrayList<SocketStatus>(20);
64 while ((line = in.readLine()) != null) {
65 start = 0;
66 stop = line.indexOf(" ", start); stop = (stop >= 0 ? stop : line.length());
67 String hostname = line.substring(start, stop);
68 if (hostname.startsWith("#")) {
69
70 continue;
71 }
72 System.out.print(hostname + ": ");
73 try {
74 status = (SocketStatus) BootstrapRegistry.lookup(hostname, "SocketStatus");
75 hosts.add(status);
76 while (stop < line.length()) {
77 start = stop+1;
78 stop = line.indexOf(" ", start); stop = (stop >= 0 ? stop : line.length());
79 String linkTo = line.substring(start, stop);
80 inet = InetAddress.getByName(linkTo);
81 start = stop+1;
82 stop = line.indexOf(" ", start); stop = (stop >= 0 ? stop : line.length());
83 prob = Integer.parseInt(line.substring(start, stop));
84 status.setStatus(inet, prob);
85 System.out.print(" link-to " + linkTo + "(" + prob + ") ");
86 }
87 System.out.println();
88 } catch (java.lang.Exception e) {
89
90 System.out.println(" Not available: " + hostname);
91 }
92 }
93 for (Iterator<SocketStatus> iter = hosts.iterator(); iter.hasNext();) {
94 status = iter.next();
95 status.commit();
96 }
97 } catch (IllegalArgumentException e) {
98 System.out.println(e.getMessage());
99 System.out.println("Usage: simulator <partition-file>");
100 } catch (Exception e) {
101 e.printStackTrace();
102 }
103 }
104
105 }