annotate src/myVncProxy/AcceptClient.java @ 171:ffc16faf011a

merge
author Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
date Fri, 21 Oct 2011 17:02:00 +0900
parents 57904d72fc09 1c0af90f7f59
children 54ad8e0654b5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 package myVncProxy;
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 import java.net.Socket;
169
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
4 import java.net.UnknownHostException;
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 import java.io.*;
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 import java.net.*;
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 import java.util.*;
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
139
407343700ccc modify AcceptClient.java
one
parents: 123
diff changeset
9 public class AcceptClient {
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
10 int counter = 0, parentnum = 0/* 落ちたときの親の番号をカウントするためのもの */;
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 LinkedList<String> ls = new LinkedList<String>();
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
12 boolean runflag = false;
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
13 private String name;
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
14 boolean addrRegistor = true;
148
0d9a824dd12f update AcceptClient.java
one
parents: 123
diff changeset
15 int passCheck = 0;
169
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
16 int treebranch = 2;// treeの子ノードの数
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
17 String newparent,request,myAddress;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
18 String leaderflag = "0", sendleaderflag = "0";
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
19 int intv_time = 100;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
20
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21
171
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 170 158
diff changeset
22
169
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
23 public AcceptClient(String name) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
24 this.name = name;
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 }
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
26
170
one
parents: 169
diff changeset
27
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 public AcceptClient() {
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 new CreateThread(this);
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 }
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
31
118
df68f1f9034d modify CreateThread.java
e085711
parents: 115
diff changeset
32 // public synchronized void transferParentAddrerss(BufferedReader
df68f1f9034d modify CreateThread.java
e085711
parents: 115
diff changeset
33 // is,PrintStream os) {
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
34 public synchronized void transferParentAddrerss(BufferedReader is,PrintStream os) {
169
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
35 // クライアントからのメッセージを待ち、受け取ったメッセージをそのまま返す
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
36 try {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
37 while (true) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
38 String line = is.readLine();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
39 String port = is.readLine();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
40 myAddress = getMyAddress();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
41 if ("1".equals(line)) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
42 replyLeaderNode(os, is, port);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
43 } else if ("2".equals(line)) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
44 replyNodeInformation(port);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
45 listupdate(port, newparent);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
46 outputStream(os, newparent, String.valueOf(parentnum),
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
47 port, leaderflag);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
48 os.close();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
49 is.close();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
50 } else if ("3".equals(line)) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
51 replyNormalChildren(os, is, port);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
52 line = null;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
53 } else {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
54 if(replyCreateTree(os, is, port, line)) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
55 break;
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
56 }
118
df68f1f9034d modify CreateThread.java
e085711
parents: 115
diff changeset
57 }
169
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
58 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
59 } catch (IOException e) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
60 System.out.println(e);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
61 } catch (InterruptedException e) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
62 e.printStackTrace();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
63 }
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 }
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
65
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 /**
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 * @param port
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
68 * parent value
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 */
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 void listupdate(String port) {
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 ls.remove(Integer.parseInt(port));
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
72 ls.add(Integer.parseInt(port), ls.getLast());
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 ls.removeLast();
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 }
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
76 void outputStream(PrintStream os, String request, String parentnum,
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
77 String treenum, String leaderflag) {
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 os.println(request);
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 os.println(parentnum);
74
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 73
diff changeset
80 os.println(treenum);
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 os.println(leaderflag);
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 }
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
83
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
84 void checkParameter(int parent, int counter, String leaderflag) {
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
85 System.out.println("pの値=" + parentnum);
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
86 System.out.println("iの値=" + counter);
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
87 System.out.println("leaderflag=" + leaderflag + "\n");
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 }
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
89
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
90 void addClientAdress(String line, LinkedList<String> ls) {
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
91 if (line != null) {
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 ls.add(line);
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 }
169
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
94 displyLinkedList(ls);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
95 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
96
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
97 void displyLinkedList( LinkedList<String> ls) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
98 int g = 0;
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
99 for (String bs : ls) {
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
100 System.out.println(g + "番目" + bs);
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
101 g++;
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
102 }
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
103 }
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
105 String decisionLeader(int counter, int treebranch) {
158
1c0af90f7f59 modify AcceptClient, MyRfbProto
e085711
parents: 152
diff changeset
106 if ((counter - 1) % treebranch == 1) { // children in most young treenum
1c0af90f7f59 modify AcceptClient, MyRfbProto
e085711
parents: 152
diff changeset
107 // have leaderflag 1 other 0
1c0af90f7f59 modify AcceptClient, MyRfbProto
e085711
parents: 152
diff changeset
108 return "0";
1c0af90f7f59 modify AcceptClient, MyRfbProto
e085711
parents: 152
diff changeset
109 } else {
148
0d9a824dd12f update AcceptClient.java
one
parents: 123
diff changeset
110 return "1";
158
1c0af90f7f59 modify AcceptClient, MyRfbProto
e085711
parents: 152
diff changeset
111 }
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 }
169
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
113
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
114 String getMyAddress () throws UnknownHostException {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
115 InetAddress addr = InetAddress.getLocalHost();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
116 return new String(addr.getHostAddress());
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
117 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
118
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
119 void replyNodeInformation (String port) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
120 parentnum = (Integer.parseInt(port) - 1) / treebranch;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
121 newparent = ls.get(parentnum);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
122 sendleaderflag = decisionLeader(Integer.parseInt(port), treebranch);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
123 leaderflag = decisionLeader(Integer.parseInt(port),treebranch);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
124 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
125
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
126 void replyLeaderNode(PrintStream os,BufferedReader is,String port) throws IOException, InterruptedException {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
127 String checkRepetition = is.readLine();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
128 os.println(ls.getLast());
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
129 replyNodeInformation(port);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
130 counter--;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
131 passCheck = 1;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
132 Child report = new Child();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
133 report.reportLastNode(ls.getLast(), newparent,port, String.valueOf(parentnum),
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
134 sendleaderflag, counter);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
135 listupdate(port);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
136 displyLinkedList(ls);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
137 os.println(port);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
138 runflag = true;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
139 leaderflag = decisionLeader(
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
140 Integer.parseInt(checkRepetition),
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
141 treebranch);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
142 if (Integer.parseInt(checkRepetition) == counter + 1) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
143 checkRepetition = "stop";
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
144 } else {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
145 checkRepetition = "go";
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
146 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
147 os.println(checkRepetition);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
148 Thread.sleep(intv_time);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
149 is.close();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
150 os.close();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
151 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
152
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
153 void replyNormalChildren(PrintStream os,BufferedReader is,String port) throws IOException {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
154 String checkRepetition = is.readLine();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
155 System.out.println("落ちたのを確認しました");
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
156
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
157 os.println(ls.get(Integer.parseInt(port)));
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
158 os.println(port);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
159
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
160
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
161 if(ls.size()-1+passCheck == Integer.parseInt(checkRepetition)) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
162 checkRepetition = "skip";
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
163 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
164 passCheck = 0;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
165
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
166 os.println(checkRepetition);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
167
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
168 System.out.println("num4="
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
169 + ls.get(Integer.parseInt(port)));
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
170
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
171 runflag = false;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
172 is.close();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
173 os.close();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
174 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
175
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
176 boolean replyCreateTree(PrintStream os,BufferedReader is,String port,String line) throws InterruptedException {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
177 if (addrRegistor == true) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
178 ls.add(myAddress);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
179 addrRegistor = false;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
180 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
181
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
182 if (line != null) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
183 addClientAdress(line, ls);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
184 counter++;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
185 } else {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
186 return true;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
187 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
188
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
189 if (counter >= treebranch + 1) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
190 leaderflag = decisionLeader(counter, treebranch);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
191 parentnum = (counter - 1) / treebranch;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
192 request = ls.get(parentnum);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
193 System.out.println(parentnum);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
194 outputStream(os, request,String.valueOf(parentnum),
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
195 String.valueOf(counter), leaderflag);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
196 checkParameter(parentnum, counter, leaderflag);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
197 } else {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
198 // treeの親ノードに接続する人に接続する人を教える
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
199 outputStream(os, myAddress, "0",
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
200 String.valueOf(counter), leaderflag);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
201 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
202 Thread.sleep(intv_time);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
203 return false;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
204 }
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
205
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
206 }
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
207
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
208 class Child {
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
209
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
210 void reportLastNode(String hiddenchild, String newparent,
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
211 String newtreenum, String newpnum, String newleaderflag, int i)
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
212 throws IOException {
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213 try {
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
214 Socket echoSocket;
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
215 System.out.println(hiddenchild + "に接続します");
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
216 echoSocket = new Socket(hiddenchild, 10001 + (i + 1));// i+1は実験中に同じマシーンを使っていたのでportを変えて対応、本番時には取り除く予定。
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
217
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
218 DataOutputStream os = new DataOutputStream(
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
219 echoSocket.getOutputStream());
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
220
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
221 os.writeBytes(newparent + "\n");
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
222 os.writeBytes(newpnum + "\n");
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
223 os.writeBytes(newtreenum + "\n");
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
224 os.writeBytes(newleaderflag + "\n");
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
225
74
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 73
diff changeset
226 os.close();
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
227 } catch (UnknownHostException e) {
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
228 System.err.println("Don't know about host: localhost");
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
229 } catch (IOException e) {
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
230 System.err
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
231 .println("Couldn't get I/O for the connection to: localhost");
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
232 }
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
233
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
234 }
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
235 }