# HG changeset patch # User oc # Date 1423532892 -32400 # Node ID f1721ec5489942642602ad6dff1c2de01f647541 # Parent 4c670edf3065dc34ca7df1205fa35c9b9cf7b3f8 add remoteRootStart diff -r 4c670edf3065 -r f1721ec54899 src/main/java/jp/ac/u_ryukyu/treevnc/CreateConnectionParam.java --- 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) { diff -r 4c670edf3065 -r f1721ec54899 src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java --- 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++) { diff -r 4c670edf3065 -r f1721ec54899 src/viewer_swing/java/com/glavsoft/viewer/Viewer.java --- 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;