annotate src/myVncProxy/AcceptClient.java @ 172:54ad8e0654b5

remove error
author Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
date Fri, 21 Oct 2011 17:06:23 +0900
parents ffc16faf011a
children eea9a1726edf
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 }
172
54ad8e0654b5 remove error
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 171
diff changeset
75
54ad8e0654b5 remove error
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 171
diff changeset
76 void listupdate(String port,String myaddr) {
54ad8e0654b5 remove error
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 171
diff changeset
77 ls.remove(Integer.parseInt(port));
54ad8e0654b5 remove error
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 171
diff changeset
78 ls.add(Integer.parseInt(port), myaddr);
54ad8e0654b5 remove error
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 171
diff changeset
79 ls.removeLast();
54ad8e0654b5 remove error
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 171
diff changeset
80 }
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
82 void outputStream(PrintStream os, String request, String parentnum,
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
83 String treenum, String leaderflag) {
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 os.println(request);
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 os.println(parentnum);
74
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 73
diff changeset
86 os.println(treenum);
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 os.println(leaderflag);
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 checkParameter(int parent, int counter, String leaderflag) {
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
91 System.out.println("pの値=" + parentnum);
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
92 System.out.println("iの値=" + counter);
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
93 System.out.println("leaderflag=" + leaderflag + "\n");
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 }
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
95
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
96 void addClientAdress(String line, LinkedList<String> ls) {
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
97 if (line != null) {
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 ls.add(line);
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 }
169
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
100 displyLinkedList(ls);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
101 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
102
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
103 void displyLinkedList( LinkedList<String> ls) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
104 int g = 0;
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
105 for (String bs : ls) {
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
106 System.out.println(g + "番目" + bs);
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
107 g++;
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
108 }
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
109 }
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
111 String decisionLeader(int counter, int treebranch) {
158
1c0af90f7f59 modify AcceptClient, MyRfbProto
e085711
parents: 152
diff changeset
112 if ((counter - 1) % treebranch == 1) { // children in most young treenum
1c0af90f7f59 modify AcceptClient, MyRfbProto
e085711
parents: 152
diff changeset
113 // have leaderflag 1 other 0
1c0af90f7f59 modify AcceptClient, MyRfbProto
e085711
parents: 152
diff changeset
114 return "0";
1c0af90f7f59 modify AcceptClient, MyRfbProto
e085711
parents: 152
diff changeset
115 } else {
148
0d9a824dd12f update AcceptClient.java
one
parents: 123
diff changeset
116 return "1";
158
1c0af90f7f59 modify AcceptClient, MyRfbProto
e085711
parents: 152
diff changeset
117 }
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 }
169
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
119
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
120 String getMyAddress () throws UnknownHostException {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
121 InetAddress addr = InetAddress.getLocalHost();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
122 return new String(addr.getHostAddress());
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
123 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
124
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
125 void replyNodeInformation (String port) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
126 parentnum = (Integer.parseInt(port) - 1) / treebranch;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
127 newparent = ls.get(parentnum);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
128 sendleaderflag = decisionLeader(Integer.parseInt(port), treebranch);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
129 leaderflag = decisionLeader(Integer.parseInt(port),treebranch);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
130 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
131
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
132 void replyLeaderNode(PrintStream os,BufferedReader is,String port) throws IOException, InterruptedException {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
133 String checkRepetition = is.readLine();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
134 os.println(ls.getLast());
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
135 replyNodeInformation(port);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
136 counter--;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
137 passCheck = 1;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
138 Child report = new Child();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
139 report.reportLastNode(ls.getLast(), newparent,port, String.valueOf(parentnum),
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
140 sendleaderflag, counter);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
141 listupdate(port);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
142 displyLinkedList(ls);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
143 os.println(port);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
144 runflag = true;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
145 leaderflag = decisionLeader(
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
146 Integer.parseInt(checkRepetition),
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
147 treebranch);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
148 if (Integer.parseInt(checkRepetition) == counter + 1) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
149 checkRepetition = "stop";
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
150 } else {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
151 checkRepetition = "go";
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
152 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
153 os.println(checkRepetition);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
154 Thread.sleep(intv_time);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
155 is.close();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
156 os.close();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
157 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
158
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
159 void replyNormalChildren(PrintStream os,BufferedReader is,String port) throws IOException {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
160 String checkRepetition = is.readLine();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
161 System.out.println("落ちたのを確認しました");
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
162
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
163 os.println(ls.get(Integer.parseInt(port)));
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
164 os.println(port);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
165
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
166
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
167 if(ls.size()-1+passCheck == Integer.parseInt(checkRepetition)) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
168 checkRepetition = "skip";
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
169 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
170 passCheck = 0;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
171
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
172 os.println(checkRepetition);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
173
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
174 System.out.println("num4="
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
175 + ls.get(Integer.parseInt(port)));
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
176
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
177 runflag = false;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
178 is.close();
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
179 os.close();
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 boolean replyCreateTree(PrintStream os,BufferedReader is,String port,String line) throws InterruptedException {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
183 if (addrRegistor == true) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
184 ls.add(myAddress);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
185 addrRegistor = false;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
186 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
187
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
188 if (line != null) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
189 addClientAdress(line, ls);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
190 counter++;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
191 } else {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
192 return true;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
193 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
194
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
195 if (counter >= treebranch + 1) {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
196 leaderflag = decisionLeader(counter, treebranch);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
197 parentnum = (counter - 1) / treebranch;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
198 request = ls.get(parentnum);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
199 System.out.println(parentnum);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
200 outputStream(os, request,String.valueOf(parentnum),
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
201 String.valueOf(counter), leaderflag);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
202 checkParameter(parentnum, counter, leaderflag);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
203 } else {
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
204 // treeの親ノードに接続する人に接続する人を教える
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
205 outputStream(os, myAddress, "0",
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
206 String.valueOf(counter), leaderflag);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
207 }
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
208 Thread.sleep(intv_time);
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
209 return false;
4ee9cfadd8dc update AcceptClient
one
parents: 148
diff changeset
210 }
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
211
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
212 }
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
214 class Child {
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
215
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
216 void reportLastNode(String hiddenchild, String newparent,
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
217 String newtreenum, String newpnum, String newleaderflag, int i)
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
218 throws IOException {
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
219 try {
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
220 Socket echoSocket;
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
221 System.out.println(hiddenchild + "に接続します");
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
222 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
223
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
224 DataOutputStream os = new DataOutputStream(
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
225 echoSocket.getOutputStream());
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
226
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
227 os.writeBytes(newparent + "\n");
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
228 os.writeBytes(newpnum + "\n");
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
229 os.writeBytes(newtreenum + "\n");
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
230 os.writeBytes(newleaderflag + "\n");
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
231
74
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 73
diff changeset
232 os.close();
73
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
233 } catch (UnknownHostException e) {
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
234 System.err.println("Don't know about host: localhost");
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
235 } catch (IOException e) {
115
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
236 System.err
7d9e9dfd7eb8 modify AcceptClient.java
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents: 74
diff changeset
237 .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
238 }
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
239
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
240 }
6fc4272db7e2 change class name
Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
parents:
diff changeset
241 }