changeset 74:4423c9c5ab5b

update
author Yu Taninari <e085734@ie.u-ryukyu.ac.jp>
date Thu, 28 Jul 2011 17:50:14 +0900
parents 6fc4272db7e2
children 6e703f1000e7 7d9e9dfd7eb8
files src/myVncProxy/AcceptClient.java
diffstat 1 files changed, 44 insertions(+), 59 deletions(-) [+]
line wrap: on
line diff
--- a/src/myVncProxy/AcceptClient.java	Tue Jul 26 22:41:15 2011 +0900
+++ b/src/myVncProxy/AcceptClient.java	Thu Jul 28 17:50:14 2011 +0900
@@ -6,7 +6,7 @@
 import java.util.*;
 
 public class AcceptClient extends Thread {
-	int counter = 0 , parentnum = 0,t = 0/*落ちたときの親の番号をカウントするためのもの*/;
+	int counter = 0 , parentnum = 0/*落ちたときの親の番号をカウントするためのもの*/;
 	LinkedList<String> ls = new LinkedList<String>();
 	boolean runflag =false;
 	private String name; 
@@ -20,7 +20,7 @@
 	}
 	
 	public synchronized void gethost(BufferedReader is,PrintStream os) {
-		String line,port,handover;
+		String line,port;
 		int intv_time = 100;
 		String request;
 		int treebranch = 2;//treeの子ノードの数
@@ -29,7 +29,7 @@
 		
 				// クライアントからのメッセージを待ち、受け取ったメッセージをそのまま返す
 		try {
-				while (true){	
+				while (true) {	
 					line = is.readLine();
 					port = is.readLine();
 					
@@ -38,46 +38,42 @@
 					InetAddress addr = InetAddress.getLocalHost();
 					String add = new String(addr.getHostAddress());
 
-					if("1".equals(line)){
+					if("1".equals(line)) {
 						System.out.println("親が落ちましたmessage" + port);	
 						os.println(ls.getLast());
-						handover = String.valueOf((Integer.parseInt(port) - 1) / treebranch);
+						parentnum = (Integer.parseInt(port) -1) / treebranch;
 						String hidenchild=ls.getLast();
-						String newparent=ls.get(Integer.parseInt(handover));
+						String newparent=ls.get(parentnum);
 						listupdate(port);
-						/*
-						ls.remove(Integer.parseInt(port));
-						ls.add(Integer.parseInt(port),ls.getLast());
-						ls.remove(Integer.parseInt(port));
-						*/
 						counter--;
-						t++;
 						runflag = true;
-						/*
-						if(t % treebranch == 0){
-							parentnum--;
-						}
-						*/
-						parentnum = (Integer.parseInt(port) -1) / treebranch;
-						
-						if((counter-1)%treebranch==1){ // children in most young treenum have leaderflag 1 other 0 
+	
+						if((counter-1)%treebranch==1) { // children in most young treenum have leaderflag 1 other 0 
 							sendleaderflag = "1";
-						}else{
+						} else {
 							sendleaderflag = "0";
 						}
 
-						Child child = new Child();
-						child.clost(hidenchild,newparent,port,handover,sendleaderflag,counter);
+						Child report = new Child();
+						
+						report.reportLastNode(hidenchild,newparent,port,String.valueOf(parentnum),
+								sendleaderflag,counter);
+						
 						os.println(port);	
 						Thread.sleep(intv_time);
 						is.close();
 						os.close();
 
-					}else if("2".equals(line)){
-						System.out.println("子供が落ちましたmessage" + port);
-						//exit シグナルを送る
-						Thread.sleep(intv_time);
-					}else if("3".equals(line)){
+					} else if("2".equals(line)) {
+						parentnum = (Integer.parseInt(port) -1) / treebranch;
+						String newparent=ls.get(parentnum);
+						
+						outputStream(os,newparent,String.valueOf(parentnum),
+								String.valueOf(counter),leaderflag);
+						
+						os.close();
+						is.close();
+					} else if("3".equals(line)) {
 						System.out.println("落ちたのを確認しました");
 
 						os.println(ls.get(Integer.parseInt(port)));
@@ -92,60 +88,48 @@
 						runflag = false;
 						is.close();
 						os.close();
-					}else{
+					} else {
 						if(addrRegistor==true){
 							ls.add(add);
 							addrRegistor = false;
 						}
 						System.out.println(parentnum);
-						if(line != null){
+						if(line != null) {
 							arg(line,ls);
 							counter++;
-						}else{
+						} else {
 							break;
 						}
 
-						if(counter>=treebranch+1){
-							if((counter-1)%treebranch==0){
+						if(counter>=treebranch+1) {
+							if((counter-1)%treebranch==0) {
 								leaderflag = "1";
-							}else{
+							} else {
 								leaderflag = "0";
 							}
-							/*
-							if((counter-1)%treebranch==0){
-								parentnum++;
-							}
-							*/
+					
 							parentnum = (counter - 1) / treebranch;
 							//			request = [p-1];
 							request = ls.get(parentnum);
-							/*
-							os.println(request);
-							os.println(String.valueOf(parentnum));
-							os.println(String.valueOf(counter));
-							os.println(leaderflag);
-							*/
-							outputStream(os,request,String.valueOf(parentnum),String.valueOf(counter),leaderflag);
+							
+							outputStream(os,request,String.valueOf(parentnum),
+									String.valueOf(counter),leaderflag);
+							
 							checkParameter(parentnum,counter,leaderflag);
-						}else{
+						} else {
 							//treeの親ノードに接続する人に接続する人を教える
-							outputStream(os,name,"0",String.valueOf(counter),leaderflag);
-							/*
-							os.println(name);//あとで渡されたmainArgs[1](現在はname)を渡す予定,addに変更
-							os.println("0");
-							os.println(String.valueOf(counter));
-							os.println(leaderflag);
-							*/
+							outputStream(os,name,"0",String.valueOf(counter),
+									leaderflag);
 						}
 						Thread.sleep(intv_time);
 					}
 				}
 				
-			} catch (IOException e){
+			} catch (IOException e) {
 				System.out.println(e);
 			}
 			
-			catch(InterruptedException e){
+			catch(InterruptedException e) {
 				e.printStackTrace();			
 			}
 			/*
@@ -169,10 +153,10 @@
 		ls.removeLast();
 	}
 
-	void outputStream(PrintStream os,String request,String parentnum,String counter,String leaderflag) {
+	void outputStream(PrintStream os,String request,String parentnum,String treenum,String leaderflag) {
 		os.println(request);
 		os.println(parentnum);
-		os.println(counter);
+		os.println(treenum);
 		os.println(leaderflag);
 	}
 	
@@ -213,7 +197,7 @@
 */
 class Child{
 	
-	void clost(String hiddenchild,String newparent,String newtreenum,String newpnum,String newleaderflag,int i) throws IOException{
+	void reportLastNode(String hiddenchild,String newparent,String newtreenum,String newpnum,String newleaderflag,int i) throws IOException{
 		try {
 			Socket echoSocket;
 			System.out.println(hiddenchild + "に接続します");
@@ -226,6 +210,7 @@
 			os.writeBytes(newtreenum+"\n");
 			os.writeBytes(newleaderflag+"\n");
 			
+			os.close();
 		} catch (UnknownHostException e) {
 			System.err.println("Don't know about host: localhost");
 		} catch (IOException e) {