changeset 35:1b81deb0abb3

write a little part reconnection.
author one
date Wed, 12 Sep 2012 13:16:47 +0900
parents f70008073a03
children b7d4d0349f99
files build.gradle src/main/java/com/glavsoft/rfb/protocol/Protocol.java src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java src/main/java/com/glavsoft/rfb/protocol/TreeTask.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/MyVncClient.java src/main/java/jp/ac/u_ryukyu/treevnc/client/WaitReply.java src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java src/viewer_swing/java/com/glavsoft/viewer/ConnectionManager.java src/viewer_swing/java/com/glavsoft/viewer/TreeConnectionManager.java src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java src/viewer_swing/java/com/glavsoft/viewer/Viewer.java
diffstat 15 files changed, 67 insertions(+), 68 deletions(-) [+]
line wrap: on
line diff
--- a/build.gradle	Tue Sep 04 19:02:04 2012 +0900
+++ b/build.gradle	Wed Sep 12 13:16:47 2012 +0900
@@ -33,7 +33,7 @@
 	baseName = project.baseName
 	version = null
     manifest {
-        attributes 'Main-Class': 'com.glavsoft.viewer.Viewer'
+        attributes 'Main-Class': 'com.glavsoft.viewer.TreeViewer'
         attributes 'Implementation-Version': "${project.version}"
     }
 }
--- a/src/main/java/com/glavsoft/rfb/protocol/Protocol.java	Tue Sep 04 19:02:04 2012 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/Protocol.java	Wed Sep 12 13:16:47 2012 +0900
@@ -324,8 +324,10 @@
 		receiverThread.start();
 	}
 
+	
 	public void startTreeClientHandling(IRfbSessionListener rfbSessionListener,
-			IRepaintController repaintController, ClipboardController clipboardController, MyRfbProto rfb) {
+			IRepaintController repaintController, 
+			ClipboardController clipboardController, MyRfbProto rfb) {
 		this.rfbSessionListener = rfbSessionListener;
 		this.repaintController = repaintController;
 //		if (settings.getBitsPerPixel() == 0) {
--- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Tue Sep 04 19:02:04 2012 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Wed Sep 12 13:16:47 2012 +0900
@@ -44,6 +44,10 @@
 import java.io.StringWriter;
 import java.util.logging.Logger;
 
+import jp.ac.u_ryukyu.treevnc.MyRfbProto;
+import jp.ac.u_ryukyu.treevnc.client.EchoClient;
+import jp.ac.u_ryukyu.treevnc.client.MyRfbProtoClient;
+
 public class ReceiverTask implements Runnable {
 	private static final byte FRAMEBUFFER_UPDATE = 0;
 	private static final byte SET_COLOR_MAP_ENTRIES = 1;
@@ -62,6 +66,16 @@
 	protected final ProtocolContext context;
 	protected PixelFormat pixelFormat;
 	protected boolean needSendPixelFormat;
+	private MyRfbProto rfb;
+	
+	public ReceiverTask(Reader reader,
+            IRepaintController repaintController, ClipboardController clipboardController,
+            DecodersContainer decoders, ProtocolContext context,
+            MyRfbProto _rfb) {
+		this(reader,repaintController,clipboardController,decoders,context);
+		rfb = _rfb;
+	}
+	
 	
 	public ReceiverTask(Reader reader,
 	                    IRepaintController repaintController, ClipboardController clipboardController,
@@ -107,7 +121,12 @@
 				}
 			} catch (TransportException e) {
 				logger.severe("Close session: " + e.getMessage());
-				if (isRunning) {
+				if(rfb instanceof MyRfbProtoClient) {
+					System.out.println("task stop");
+					EchoClient echo = rfb.getEcho();
+					echo.openport();
+					echo.lostHost();
+				} else if (isRunning) {
 					context.cleanUpSession("Connection closed.");
 				}
 				stopTask();
--- a/src/main/java/com/glavsoft/rfb/protocol/TreeTask.java	Tue Sep 04 19:02:04 2012 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/TreeTask.java	Wed Sep 12 13:16:47 2012 +0900
@@ -16,7 +16,7 @@
 	public TreeTask(Reader reader, IRepaintController repaintController,
 			ClipboardController clipboardController,
 			DecodersContainer decoders, ProtocolContext context, MyRfbProto rfb) {
-		super(reader, repaintController, clipboardController, decoders, context);
+		super(reader, repaintController, clipboardController, decoders, context, rfb);
 		//super(reader, new NullRepaintController(), clipboardController, decoders,context, true);
 		Decoder decoder = new ZRLEESender(rfb);
 		decoders.setDecoderByType(EncodingType.ZLIB, decoder);
--- a/src/main/java/com/glavsoft/transport/Reader.java	Tue Sep 04 19:02:04 2012 +0900
+++ b/src/main/java/com/glavsoft/transport/Reader.java	Wed Sep 12 13:16:47 2012 +0900
@@ -47,7 +47,6 @@
 		} catch (IOException e) {
 			throw new TransportException("Cannot read byte", e);
 		}
-
 	}
 
 	public int readUInt8() throws TransportException {
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java	Tue Sep 04 19:02:04 2012 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java	Wed Sep 12 13:16:47 2012 +0900
@@ -6,6 +6,7 @@
 import java.util.LinkedList;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import jp.ac.u_ryukyu.treevnc.client.EchoClient;
 import jp.ac.u_ryukyu.treevnc.server.RequestScreenThread;
 
 import com.glavsoft.exceptions.TransportException;
@@ -24,6 +25,7 @@
 	protected MulticastQueue<LinkedList<ByteBuffer>> multicastqueue = new MulticastQueue<LinkedList<ByteBuffer>>();
 	private RequestScreenThread rThread;
 	private boolean proxyFlag = true;
+	private EchoClient echo;
 	
 	public MyRfbProto() {
 		rThread = new RequestScreenThread(this);
@@ -312,4 +314,13 @@
 	public void notProxy() {
 		proxyFlag = false;
 	}
+
+
+	public void setEcho(EchoClient _echo) {
+		echo = _echo;
+	}
+	
+	public EchoClient getEcho() {
+		return echo;
+	}
 }
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/EchoClient.java	Tue Sep 04 19:02:04 2012 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/EchoClient.java	Wed Sep 12 13:16:47 2012 +0900
@@ -14,7 +14,7 @@
 	private boolean runflag = false;
 	private WaitReply waitReply;
 	private Socket clientSocket = null;
-	private InterfaceForViewer client;
+	private MyVncClient client;
 	private int echoPort = 9999;
 	public String parentAddress;
 	public String parentNum;
@@ -36,7 +36,7 @@
 	}
 
 	public EchoClient(String name, MyVncClient client) {
-		this.client = (InterfaceForViewer) client;
+		this.client = client;
 		this.name = name;
 	}
 
@@ -46,13 +46,13 @@
 	}
 	
 	public EchoClient(String name, MyVncClient client, int echoPort) {
-		this.client = (InterfaceForViewer) client;
+		this.client = client;
 		this.name = name;
 		this.echoPort = echoPort;
 	}
 
 	public EchoClient(EchoClient echo, MyVncClient client) {
-		this.client = (InterfaceForViewer) client;
+		this.client = client;
 		this.name = echo.name;
 		leaderFlag = echo.leaderFlag;
 		parentNum = echo.parentNum;
@@ -111,7 +111,7 @@
 	/**
 	 * Call at lost host
 	 */
-	boolean lostHost() {
+	public boolean lostHost() {
 		if (echoSocket != null && os != null && is != null) {
 			try {
 				if (runflag) {
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java	Tue Sep 04 19:02:04 2012 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java	Wed Sep 12 13:16:47 2012 +0900
@@ -2,6 +2,7 @@
 
 import java.awt.event.WindowEvent;
 import java.awt.event.WindowListener;
+import java.net.Socket;
 import java.util.logging.Logger;
 
 import com.glavsoft.rfb.IChangeSettingsListener;
@@ -117,4 +118,14 @@
 	@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	Tue Sep 04 19:02:04 2012 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/WaitReply.java	Wed Sep 12 13:16:47 2012 +0900
@@ -4,16 +4,14 @@
 import java.net.ServerSocket;
 import java.net.Socket;
 
-import jp.ac.u_ryukyu.treevnc.*;
-
 
 public class WaitReply extends Thread {
-	InterfaceForViewer client;
+	MyVncClient client;
 	boolean passflag;
 	
 
 
-	public WaitReply(String treenum, InterfaceForViewer client) {
+	public WaitReply(String treenum, MyVncClient client) {
 		this.client = client;
 	}
 	
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java	Tue Sep 04 19:02:04 2012 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java	Wed Sep 12 13:16:47 2012 +0900
@@ -8,7 +8,6 @@
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.nio.ByteBuffer;
-import java.util.Iterator;
 import java.util.LinkedList;
 import com.glavsoft.exceptions.TransportException;
 import com.glavsoft.rfb.encoding.EncodingType;
@@ -405,15 +404,6 @@
 	}
 	 */
 	
-	private LinkedList<ByteBuffer> clone(LinkedList<ByteBuffer> in) {
-		LinkedList<ByteBuffer> copy = new LinkedList<ByteBuffer>();
-		for (ByteBuffer b : in) {
-			ByteBuffer c = b.duplicate();
-			copy.add(c);
-		}
-		return copy;
-	}
-	
 	/*
 	public int equalByteBuffers(LinkedList<ByteBuffer> in,
 			LinkedList<ByteBuffer> out2) {
@@ -436,43 +426,6 @@
 	}
 	*/
 
-	private Iterable<Byte> byteBufferIterator(final LinkedList<ByteBuffer> in) {
-		return new Iterable<Byte>() {
-			public Iterator<Byte> iterator() {
-				return new Iterator<Byte>() {
-					int bytes = 0;
-					int buffers = 0;
-
-					public boolean hasNext() {
-						for (;;) {
-							if (buffers >= in.size())
-								return false;
-							ByteBuffer b = in.get(buffers);
-							if (!(bytes < b.remaining())) {
-								buffers++;
-								bytes = 0;
-							} else
-								return true;
-						}
-					}
-
-					public Byte next() {
-						ByteBuffer bf = in.get(buffers);
-						byte b = bf.get(bytes++);
-						if (bf.remaining() <= bytes) {
-							buffers++;
-							bytes = 0;
-						}
-						// System.out.print(b);
-						return b;
-					}
-
-					public void remove() {
-					}
-				};
-			}
-		};
-	}
 
 	void sendRfbVersion(Writer writer) throws IOException, TransportException {
 		// os.write(versionMsg_3_8.getBytes());
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java	Tue Sep 04 19:02:04 2012 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java	Wed Sep 12 13:16:47 2012 +0900
@@ -118,7 +118,7 @@
 		while (tryAgain) {
 		//  connectionParams.hostName = arguments[0];
 		//	workingSocket = connectionManager.connectToTreeHost(connectionParams, settings);
-			workingSocket = connectionManager.connectToHost(connectionParams, settings);
+			workingSocket = connectionManager.connectToHost(connectionParams, settings, rfb);
 			if (null == workingSocket) {
 				closeApp();
 				break;
--- a/src/viewer_swing/java/com/glavsoft/viewer/ConnectionManager.java	Tue Sep 04 19:02:04 2012 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/ConnectionManager.java	Wed Sep 12 13:16:47 2012 +0900
@@ -38,6 +38,8 @@
 import java.net.Socket;
 import java.net.UnknownHostException;
 
+import jp.ac.u_ryukyu.treevnc.MyRfbProto;
+
 
 public class ConnectionManager implements Serializable {
 	/**
@@ -117,7 +119,7 @@
 	}
 */
 
-	public Socket connectToHost(final ParametersHandler.ConnectionParams connectionParams, ProtocolSettings settings) {
+	public Socket connectToHost(final ParametersHandler.ConnectionParams connectionParams, ProtocolSettings settings, MyRfbProto rfb) {
 		Socket socket = null;
 		ConnectionDialog connectionDialog = null;
 		boolean wasError = false;
@@ -171,4 +173,5 @@
 	public void setContainerFrame(JFrame containerFrame) {
 		this.containerFrame = containerFrame;
 	}
+
 }
\ No newline at end of file
--- a/src/viewer_swing/java/com/glavsoft/viewer/TreeConnectionManager.java	Tue Sep 04 19:02:04 2012 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/TreeConnectionManager.java	Wed Sep 12 13:16:47 2012 +0900
@@ -5,6 +5,7 @@
 import java.net.Socket;
 import java.net.UnknownHostException;
 
+import jp.ac.u_ryukyu.treevnc.MyRfbProto;
 import jp.ac.u_ryukyu.treevnc.client.GetDataClient;
 import jp.ac.u_ryukyu.treevnc.client.GetHostClient;
 import jp.ac.u_ryukyu.treevnc.client.EchoClient;
@@ -25,7 +26,8 @@
 	}
 	
 	@Override
-	public Socket connectToHost(final ParametersHandler.ConnectionParams connectionParams, ProtocolSettings settings) {
+	public Socket connectToHost(final ParametersHandler.ConnectionParams connectionParams, 
+			ProtocolSettings settings, MyRfbProto rfb) {
 		Socket socket = null;
 		GetHostClient bCast = new GetHostClient("who");
 		bCast.getHost();
@@ -40,6 +42,7 @@
 		} else {
 			// getBcast.ipRegister();
 			EchoClient echo = new EchoClient(getBcast.textAddress(),9999);
+			rfb.setEcho(echo);
 			echo.getParentName();
 			connectionParams.hostName = echo.parentAddress;
 			connectionParams.portNumber = Integer.parseInt(getBcast.textPort()); // I should get port number 
--- a/src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java	Tue Sep 04 19:02:04 2012 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java	Wed Sep 12 13:16:47 2012 +0900
@@ -41,9 +41,9 @@
 				treeProxy = true;
 			} else {
 				i++;
-				System.out.println("(default) TreeVNCClient"
-								+ "-p       TreeVNCProxy"
-								+ "-v       VNCViewer"
+				System.out.println("(default) TreeVNCClient\n"
+								+ "-p       TreeVNCProxy\n"
+								+ "-v       VNCViewer\n"
 								+ "-r      TreeVNCProxy for RemoteHost. you should input parameter host and port");
 			}
 		}
--- a/src/viewer_swing/java/com/glavsoft/viewer/Viewer.java	Tue Sep 04 19:02:04 2012 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/Viewer.java	Wed Sep 12 13:16:47 2012 +0900
@@ -289,7 +289,7 @@
 	
 		tryAgain = true;
 		while (tryAgain) {
-			workingSocket = connectionManager.connectToHost(connectionParams, settings);
+			workingSocket = connectionManager.connectToHost(connectionParams, settings, rfb);
 			if (null == workingSocket) {
 				closeApp();
 				break;