changeset 343:f1721ec54899

add remoteRootStart
author oc
date Tue, 10 Feb 2015 10:48:12 +0900
parents 4c670edf3065
children f2921fd4ac96
files src/main/java/jp/ac/u_ryukyu/treevnc/CreateConnectionParam.java src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java src/viewer_swing/java/com/glavsoft/viewer/Viewer.java
diffstat 3 files changed, 43 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/CreateConnectionParam.java	Mon Feb 09 18:17:36 2015 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/CreateConnectionParam.java	Tue Feb 10 10:48:12 2015 +0900
@@ -1,6 +1,8 @@
 package jp.ac.u_ryukyu.treevnc;
 
 import java.io.IOException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
 
 import com.glavsoft.viewer.ViewerInterface;
 import com.glavsoft.viewer.swing.ConnectionParams;
@@ -36,7 +38,16 @@
 	public void sendWhereToConnect(ViewerInterface v) {
         rfb.setConnectionParam(this);
 		TreeVncProtocol echo = new TreeVncProtocol(hostName,portNumber);
-        echo.whereToConnect(myHostName,rfb.getAcceptPort());
+        echo.whereToConnect(hostName,rfb.getAcceptPort());
+    }
+
+    public void firstSendWhereToConnect(ViewerInterface v) {
+        try {
+            myHostName = InetAddress.getLocalHost().getHostAddress();
+        } catch (UnknownHostException e) {
+            e.printStackTrace();
+        }
+
     }
 	
 	public synchronized void setHostName(String _hostName, int port, String _myHostName) {
--- a/src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java	Mon Feb 09 18:17:36 2015 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java	Tue Feb 10 10:48:12 2015 +0900
@@ -58,6 +58,10 @@
             if(fixingSizeDisplay)
                 setFixingSizeDisplay(v);
             if (treeProxy) {
+                if (hostName != null) {
+                    // send whereToConnect
+                    remoteRootStart(args, v);
+                }
                 // this viewer also works as tree root ( display mode -d flag )
                 // start with no connection waiting server change request
                 rootStart(args, v);
@@ -65,18 +69,20 @@
                 v.startTreeViewer(hostName,cui);
             }
         }
-
-
     }
 
     public void rootStart(String[] args, ViewerInterface v) throws SocketException, UnknownHostException {
         v.setNoConnection(noConnection);  // should we accept host name here?
         v.proxyStart(args, width, height, showTree, checkDelay, addSerialNum, fixingSizeDisplay, filterSingleDisplay);
         v.getRfb().setHasViewer(viewer);
-        if (!permitChangeScreen ) v.getRfb().setPermitChangeScreen(false);
+        if (!permitChangeScreen) v.getRfb().setPermitChangeScreen(false);
         v.getRfb().getAcceptThread().waitForShutdown();
     }
 
+    public void remoteRootStart(String[] args, ViewerInterface v) {
+        v.startTreeViewer(hostName, cui);
+    }
+
     private void modeSelect(String[] args) {
         viewer = true; // default
         for (int i = 0; i < args.length; i++) {
--- a/src/viewer_swing/java/com/glavsoft/viewer/Viewer.java	Mon Feb 09 18:17:36 2015 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/Viewer.java	Tue Feb 10 10:48:12 2015 +0900
@@ -291,28 +291,6 @@
     }
 
     /**
-     * start TreeVNC viewer
-     */
-    public void startTreeViewer(String hostName,boolean cui) {
-        TreeRFBProto rfb = new TreeRFBProto(false, this);
-        rfb.setCuiVersion(cui);
-        rfb.setHasViewer(true);
-        rfb.createConnectionAndStart(this);
-        CreateConnectionParam cp = new CreateConnectionParam(rfb);
-        if (hostName!=null) {
-            cp.setHostName(hostName);
-        } else {
-            cp.findTreeVncRoot();
-        }
-        cp.sendWhereToConnect(this);
-        isTreeVNC = true;
-        myRfb =  rfb;
-        settings.setViewOnly(true); // too avoid unnecessary upward traffic
-        rfb.getAcceptThread().waitForShutdown();
-    }
-
-
-    /**
      * Start client with new parent (including reconnection) 
      * @param port
      * @param hostname
@@ -356,6 +334,28 @@
         run();
     }
 
+    /**
+     * start TreeVNC viewer
+     */
+    public void startTreeViewer(String hostName,boolean cui) {
+        TreeRFBProto rfb = new TreeRFBProto(false, this);
+        rfb.setCuiVersion(cui);
+        rfb.setHasViewer(true);
+        rfb.createConnectionAndStart(this);
+        CreateConnectionParam cp = new CreateConnectionParam(rfb);
+        if (hostName!=null) {
+            cp.setHostName(hostName);
+        } else {
+            cp.findTreeVncRoot();
+        }
+        cp.firstSendWhereToConnect(this);
+        cp.sendWhereToConnect(this);
+        isTreeVNC = true;
+        myRfb =  rfb;
+        settings.setViewOnly(true); // too avoid unnecessary upward traffic
+        rfb.getAcceptThread().waitForShutdown();
+    }
+
     public void proxyStart(String[] argv, int width, int height, boolean showTree, boolean checkDelay, boolean addSerialNum, boolean fixingSize, boolean filterSingleDisplay) {
         fbWidth = width;
         this.showTree = showTree;