changeset 36:b7d4d0349f99

write part of reconnection and remove warning.
author one
date Tue, 18 Sep 2012 17:23:19 +0900
parents 1b81deb0abb3
children 1454d6fe96c1
files dist/tightvnc-jviewer-2.5.0/tightvnc-jviewer.jar src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java src/main/java/com/glavsoft/transport/Reader.java src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java src/main/java/jp/ac/u_ryukyu/treevnc/client/EchoClient.java src/main/java/jp/ac/u_ryukyu/treevnc/client/MyRfbProtoClient.java src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java src/main/java/jp/ac/u_ryukyu/treevnc/client/WaitReply.java src/viewer_swing/java/com/glavsoft/viewer/Viewer.java
diffstat 9 files changed, 85 insertions(+), 54 deletions(-) [+]
line wrap: on
line diff
Binary file dist/tightvnc-jviewer-2.5.0/tightvnc-jviewer.jar has changed
--- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Wed Sep 12 13:16:47 2012 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Tue Sep 18 17:23:19 2012 +0900
@@ -53,8 +53,6 @@
 	private static final byte SET_COLOR_MAP_ENTRIES = 1;
 	private static final byte BELL = 2;
 	private static final byte SERVER_CUT_TEXT = 3;
-
-
 	protected static Logger logger = Logger.getLogger("com.glavsoft.rfb.protocol.ReceiverTask");
 	protected final Reader reader;
 	private volatile boolean isRunning = false;
@@ -123,9 +121,17 @@
 				logger.severe("Close session: " + e.getMessage());
 				if(rfb instanceof MyRfbProtoClient) {
 					System.out.println("task stop");
-					EchoClient echo = rfb.getEcho();
-					echo.openport();
-					echo.lostHost();
+					int counter = 0;
+					while(true) {
+						EchoClient echo = rfb.getEcho();
+						if(counter > 3) {
+							echo.openport();
+							echo.notfoundParent();
+						}
+						echo.openport();
+						if(echo.lostHost()) break;
+						 counter++;
+					}
 				} else if (isRunning) {
 					context.cleanUpSession("Connection closed.");
 				}
--- a/src/main/java/com/glavsoft/transport/Reader.java	Wed Sep 12 13:16:47 2012 +0900
+++ b/src/main/java/com/glavsoft/transport/Reader.java	Tue Sep 18 17:23:19 2012 +0900
@@ -154,7 +154,8 @@
 			result = is.read(b);
 			return result;
 		} catch (IOException e) {
-			throw new TransportException("Cannot readByte", e);
+			return 0;
+//			throw new TransportException("Cannot readByte", e);
 		}
 	}
 
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java	Wed Sep 12 13:16:47 2012 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java	Tue Sep 18 17:23:19 2012 +0900
@@ -14,6 +14,7 @@
 import com.glavsoft.rfb.protocol.ProtocolContext;
 import com.glavsoft.transport.Reader;
 import com.glavsoft.transport.Writer;
+import com.glavsoft.viewer.Viewer;
 
 public class MyRfbProto {
 	final static int FramebufferUpdateRequest = 3;
@@ -100,6 +101,7 @@
 							writerRunning.set(2);
 							os.close();
 							is.close();
+							break;
 						} catch (IOException e1) {
 						} catch (TransportException e1) {
 							e1.printStackTrace();
@@ -320,6 +322,10 @@
 		echo = _echo;
 	}
 	
+	public void setViewer(Viewer v) {
+		echo.setViewer(v);
+	}
+	
 	public EchoClient getEcho() {
 		return echo;
 	}
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/EchoClient.java	Wed Sep 12 13:16:47 2012 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/EchoClient.java	Tue Sep 18 17:23:19 2012 +0900
@@ -3,8 +3,7 @@
 import java.io.*;
 import java.net.*;
 
-import jp.ac.u_ryukyu.treevnc.*;
-
+import com.glavsoft.viewer.Viewer;
 
 public class EchoClient {
 	private String name;
@@ -14,7 +13,7 @@
 	private boolean runflag = false;
 	private WaitReply waitReply;
 	private Socket clientSocket = null;
-	private MyVncClient client;
+	Viewer client;
 	private int echoPort = 9999;
 	public String parentAddress;
 	public String parentNum;
@@ -102,7 +101,7 @@
 			} catch (IOException e) {
 				System.err.println("IOException: " + e);
 			}
-			waitReply = new WaitReply(treeNum, client);
+			waitReply = new WaitReply(treeNum,this);
 			waitReply.start();
 		}
 		return this;
@@ -142,7 +141,7 @@
 		return true;
 	}
 
-	boolean notfoundParent() {
+	public boolean notfoundParent() {
 		if (echoSocket != null && os != null && is != null) {
 			runflag = true;
 			try {
@@ -205,9 +204,16 @@
 	}
 
 	void reConnectionMain(Socket echoSocket) {
-		client.close();
-		client.setClientSocket(echoSocket);
-		client.run();
+		try {
+			client.close();
+			client.setSocket(createSocketForClient(echoSocket));
+			Thread.sleep(1000);
+			client.run();
+		} catch (IOException e) {
+			e.printStackTrace();
+		} catch (InterruptedException e) {
+			e.printStackTrace();
+		}
 	}
 
 	void streamClose() throws IOException {
@@ -253,4 +259,26 @@
 			Interruption(clientSocket);
 		}
 	}
+
+	public void setViewer(Viewer v) {
+		client = v;
+	}
+
+	public Socket createSocketForClient(Socket soc) throws IOException {
+		BufferedReader is = new BufferedReader(new InputStreamReader(
+				soc.getInputStream()));
+		if ((parentAddress = is.readLine()) != null) {
+			System.out.println("Server: " + parentAddress);
+		}
+		if ((parentNum = is.readLine()) != null) {
+			System.out.println("parent: " + parentNum);
+		}
+		if ((treeNum = is.readLine()) != null) {
+			System.out.println("treenum: " + treeNum);
+		}
+		if ((leaderFlag = is.readLine()) != null) {
+			System.out.println("leaderflag: " + leaderFlag);
+		}
+		return new Socket(parentAddress,5999);
+	}
 }
\ No newline at end of file
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyRfbProtoClient.java	Wed Sep 12 13:16:47 2012 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyRfbProtoClient.java	Tue Sep 18 17:23:19 2012 +0900
@@ -19,7 +19,6 @@
 import com.glavsoft.rfb.encoding.EncodingType;
 import com.glavsoft.rfb.protocol.ProtocolContext;
 import com.glavsoft.transport.Reader;
-import com.glavsoft.viewer.swing.ParametersHandler.ConnectionParams;
 
 public class MyRfbProtoClient extends MyRfbProto {
 	final static int FramebufferUpdate = 0;
@@ -27,9 +26,8 @@
 	final static String versionMsg_3_855 = "RFB 003.855\n";
 	private static final int INFLATE_BUFSIZE = 1024 * 100;
 	private Reader reader;
-	private EchoClient echoValue = new EchoClient();
-	private String host, treenum, parent, pHost, leaderflag;
-	private int echoPort, port, acceptPort;
+	private String host;
+	private int port;
 	Socket clientSocket, sock;
 	DataInputStream is;
 	OutputStream os;
@@ -50,10 +48,6 @@
 		this.reader = reader;
 	}
 
-	public void setParam(ConnectionParams connectionParams) {
-		pHost = connectionParams.hostName;
-		echoPort = connectionParams.portNumber;
-	}
 
 	public boolean readProxyFlag() throws TransportException {
 		int flag = reader.readUInt8();
@@ -66,7 +60,6 @@
 	public byte[] readEchoPort() throws Exception {
 		byte[] b = new byte[4];
 		reader.readBytes(b, 0, b.length);
-		// readFully(b);
 		return b;
 	}
 
@@ -89,7 +82,7 @@
 
 	void initServSock(int port) throws IOException {
 		servSock = new ServerSocket(port);
-		acceptPort = port;
+//		acceptPort = port;
 	}
 
 	@Override
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java	Wed Sep 12 13:16:47 2012 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java	Tue Sep 18 17:23:19 2012 +0900
@@ -2,7 +2,6 @@
 
 import java.awt.event.WindowEvent;
 import java.awt.event.WindowListener;
-import java.net.Socket;
 import java.util.logging.Logger;
 
 import com.glavsoft.rfb.IChangeSettingsListener;
@@ -118,14 +117,4 @@
 	@Override
 	public void windowOpened(WindowEvent e) { /*nop*/ }
 
-	public void close() {
-		// TODO Auto-generated method stub
-		
-	}
-
-	public void setClientSocket(Socket echoSocket) {
-		// TODO Auto-generated method stub
-		
-	}
-
 }
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/WaitReply.java	Wed Sep 12 13:16:47 2012 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/WaitReply.java	Tue Sep 18 17:23:19 2012 +0900
@@ -4,15 +4,12 @@
 import java.net.ServerSocket;
 import java.net.Socket;
 
-
 public class WaitReply extends Thread {
-	MyVncClient client;
 	boolean passflag;
+	EchoClient echo;
 	
-
-
-	public WaitReply(String treenum, MyVncClient client) {
-		this.client = client;
+	public WaitReply(String treenum, EchoClient echo) {
+		this.echo = echo;
 	}
 	
 	public boolean checkPath() {
@@ -27,22 +24,14 @@
 			try {
 				echoServer = new ServerSocket(10001);
 				clientSocket = echoServer.accept();
-				
 				if (clientSocket != null) {
-					client.close();
-					/*
+					echo.client.close();
 					passflag = true;
-					client.setClientSocket(clientSocket);
-					client.init();
-					client.setEchoValue(null);
-					client.getParentName();
-					client.start_threads();
-					client.start();
-					*/
-					client.run();
+					echo.client.setSocket(echo.createSocketForClient(clientSocket));
+					// client.init();
+					echo.client.run();
 					echoServer.close();
 				}
-
 			} catch (IOException e) {
 				System.out.println(e);
 			}
--- a/src/viewer_swing/java/com/glavsoft/viewer/Viewer.java	Wed Sep 12 13:16:47 2012 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/Viewer.java	Tue Sep 18 17:23:19 2012 +0900
@@ -289,7 +289,8 @@
 	
 		tryAgain = true;
 		while (tryAgain) {
-			workingSocket = connectionManager.connectToHost(connectionParams, settings, rfb);
+			if(workingSocket==null)
+				workingSocket = connectionManager.connectToHost(connectionParams, settings, rfb);
 			if (null == workingSocket) {
 				closeApp();
 				break;
@@ -318,6 +319,7 @@
 				connectionManager.setContainerFrame(containerFrame);
 				updateFrameTitle();
 				if(rfb != null) {
+					rfb.setViewer(this);
 					runAcceptThread();
 					rfb.setProtocolContext(workingProtocol);
 					rfb.notProxy();
@@ -634,4 +636,21 @@
 		Viewer viewer = new Viewer(parser);
 		SwingUtilities.invokeLater(viewer);
 	}
+	
+	public void setSocket(Socket soc) {
+		workingSocket = soc;
+	}
+	
+	public void close() {
+		try {
+			workingProtocol.getWriter().close();
+			workingProtocol.getReader().close();
+			cleanUpUISessionAndConnection();
+		} catch (IOException e) {
+			e.printStackTrace();
+		} catch (TransportException e) {
+			e.printStackTrace();
+		}
+	}
+
 }