annotate src/myVncProxy/AcceptClient.java @ 169:4ee9cfadd8dc

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