368ec4e935f1c1d44c30ea5d3f9073f69fb95ea1
[IRC.git] / Robust / src / Benchmarks / Spider / dsm / Spider.java
1 public class Spider {
2         public static void main(String[] args) {
3                 int NUM_THREADS = 3;
4     int maxDepth = 3;
5                 int i, j;
6                 QueryThread[] qt;
7                 GlobalQuery[] currentWorkList;
8
9                 NUM_THREADS = Integer.parseInt(args[0]);
10
11     if(args.length == 3) {
12       maxDepth = Integer.parseInt(args[2]);
13     }
14
15     GlobalString firstmachine;
16
17                 int mid[] = new int[NUM_THREADS];
18 /*              mid[0] = (128<<24)|(195<<16)|(180<<8)|21;        //dc-4
19                 mid[1] = (128<<24)|(195<<16)|(180<<8)|24;        //dc-5
20                 mid[2] = (128<<24)|(195<<16)|(180<<8)|26;        //dc-6
21     */
22                 mid[0] = (128<<24)|(195<<16)|(136<<8)|162;       //dc-1
23                 mid[1] = (128<<24)|(195<<16)|(136<<8)|163;       //dc-2
24                 mid[2] = (128<<24)|(195<<16)|(136<<8)|164;       //dc-3
25                 mid[3] = (128<<24)|(195<<16)|(136<<8)|165;       //dc-4
26 //              mid[4] = (128<<24)|(195<<16)|(136<<8)|166;       //dc-5
27 //              mid[5] = (128<<24)|(195<<16)|(136<<8)|167;       //dc-6
28
29                 atomic {
30                         firstmachine = global new GlobalString(args[1]);
31
32                         qt = global new QueryThread[NUM_THREADS];
33                         currentWorkList = global new GlobalQuery[NUM_THREADS];
34                         
35                         GlobalQuery firstquery = global new GlobalQuery(firstmachine);
36
37                         Queue todoList = global new Queue();
38       DistributedHashMap doneList = global new DistributedHashMap(500,500, 0.75f);
39       DistributedHashMap results = global new DistributedHashMap(100,100,0.75f);
40
41                         todoList.push(firstquery);
42
43                         for (i = 0; i < NUM_THREADS; i++) {
44                                 qt[i] = global new QueryThread(todoList, doneList, results,maxDepth, i,NUM_THREADS,currentWorkList);
45                         }
46                 }
47                 System.printString("Finished to create Objects\n");
48
49                 QueryThread tmp;
50                 for (i = 0; i < NUM_THREADS; i++) {
51                         atomic {
52                                 tmp = qt[i];
53                         }
54       tmp.start(mid[i]);
55                 }
56
57                 for (i = 0; i < NUM_THREADS; i++) {
58                         atomic {
59                                 tmp = qt[i];
60                         }
61                         tmp.join();
62                 }
63         }
64
65         public static int[] getMID (int num_threads) {
66                 int[] mid = new int[num_threads];
67
68                 FileInputStream ifs = new FileInputStream("dstm.conf");
69                 String str;
70                 String sub;
71                 int fromIndex;
72                 int endIndex;
73                 double num;
74
75                 for (int i = 0; i < num_threads; i++) { 
76                         int power = 3 - i;
77                         fromIndex = 0;
78                         num = 0;
79
80                         str = ifs.readLine();
81
82                         endIndex = str.indexOf('.', fromIndex);
83                         sub = str.subString(fromIndex, endIndex);
84                         num += (Integer.parseInt(sub) << 24);
85
86                         fromIndex = endIndex + 1;
87                         endIndex = str.indexOf('.', fromIndex);
88                         sub = str.subString(fromIndex, endIndex);
89                         num += (Integer.parseInt(sub) << 16);
90
91                         fromIndex = endIndex + 1;
92                         endIndex = str.indexOf('.', fromIndex);
93                         sub = str.subString(fromIndex, endIndex);
94                         num += (Integer.parseInt(sub) << 8);
95
96                         fromIndex = endIndex + 1;
97                         sub = str.subString(fromIndex);
98                         num += Integer.parseInt(sub);
99
100                         mid[i] = (int)num;
101                 }
102                 return mid;
103         }
104 }