# HG changeset patch # User Taninari YU # Date 1388448787 -32400 # Node ID d9cf08c6415ce0599d736c9454f20e2213bc5614 # Parent ac6f9e46566fb96136c43e4a84896e01e5440195 During implementation change screen. diff -r ac6f9e46566f -r d9cf08c6415c .gradle/1.4/taskArtifacts/fileHashes.bin Binary file .gradle/1.4/taskArtifacts/fileHashes.bin has changed diff -r ac6f9e46566f -r d9cf08c6415c build.gradle --- a/build.gradle Sat Dec 21 18:46:54 2013 +0900 +++ b/build.gradle Tue Dec 31 09:13:07 2013 +0900 @@ -37,12 +37,13 @@ } dependencies { - viewerSwingCompile group: 'com.jcraft', name: 'jsch', version: '0.1.+', ext: 'jar' + //viewerSwingCompile group: 'com.jcraft', name: 'jsch', version: '0.1.+', ext: 'jar' + compile group: 'com.jcraft', name: 'jsch', version: '0.1.+', ext: 'jar' viewerSwingRuntime configurations.viewerSwingCompile testCompile group: 'junit', name: 'junit', version: '4.+' } -def manifestAttributes = ['Main-Class': 'com.glavsoft.viewer.Viewer', +def manifestAttributes = ['Main-Class': 'com.glavsoft.viewer.TreeViewer', 'Implementation-Version': "${project.version} (${buildNo})", 'Implementation-Title': 'TightVNC Viewer', 'Implementation-Vendor': 'GlavSoft LLC.'] diff -r ac6f9e46566f -r d9cf08c6415c src/main/java/com/glavsoft/rfb/client/FramebufferUpdateRequestMessage.java --- a/src/main/java/com/glavsoft/rfb/client/FramebufferUpdateRequestMessage.java Sat Dec 21 18:46:54 2013 +0900 +++ b/src/main/java/com/glavsoft/rfb/client/FramebufferUpdateRequestMessage.java Tue Dec 31 09:13:07 2013 +0900 @@ -78,7 +78,6 @@ TimerTask tt = new TimerTask() { @Override public void run() { - System.out.println("fullscreen"); sendFullScreenFlag = true; } }; diff -r ac6f9e46566f -r d9cf08c6415c src/main/java/com/glavsoft/rfb/protocol/Protocol.java --- a/src/main/java/com/glavsoft/rfb/protocol/Protocol.java Sat Dec 21 18:46:54 2013 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/Protocol.java Tue Dec 31 09:13:07 2013 +0900 @@ -66,8 +66,8 @@ private PixelFormat serverPixelFormat; private Thread senderThread; private Thread receiverThread; - private boolean isTight; - private String protocolVersion; + private boolean isTight; + private String protocolVersion; private byte[] initData; private boolean isRetina = false; diff -r ac6f9e46566f -r d9cf08c6415c src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java --- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Sat Dec 21 18:46:54 2013 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Tue Dec 31 09:13:07 2013 +0900 @@ -76,6 +76,7 @@ rfb = _rfb; if(!(rfb instanceof MyRfbProtoClient)) { fullscreenFbUpdateIncrementalRequest.sendFullScreenRequest(); + connectionFinished(); } } @@ -237,4 +238,8 @@ public void stopTask() { isRunning = false; } + + private void connectionFinished() { + rfb.setReadyReconnect(true); + } } diff -r ac6f9e46566f -r d9cf08c6415c src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java Sat Dec 21 18:46:54 2013 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java Tue Dec 31 09:13:07 2013 +0900 @@ -31,6 +31,7 @@ private EchoClient echo; private String proxyAddr; public int acceptPort; + protected boolean readyReconnect; public MyRfbProto() { rThread = new RequestScreenThread(this); @@ -227,15 +228,12 @@ } public void screenChangeRequest() throws IOException { - Socket echoSocket; - echoSocket = new Socket(proxyAddr, 10001); + Socket echoSocket = new Socket(proxyAddr, 10001); DataOutputStream os = new DataOutputStream(echoSocket.getOutputStream()); os.writeBytes(echo.getMyAddress()+"\n"); //os.writeBytes(String.valueOf(echo.client.getFrameWidth())+"\n"); temp comment out for rebuild //os.writeBytes(String.valueOf(echo.client.getFrameHeight())+"\n"); temp comment out for rebuild - System.out.println("---------push-------"); - // os.writeBytes("1240\n"); - // os.writeBytes("880\n"); + System.out.println("---------push-------"+proxyAddr); os.close(); } @@ -369,4 +367,10 @@ return 0; } + public boolean getReadyReconnect() { + return readyReconnect; + } + + public void setReadyReconnect(boolean ready) { + } } diff -r ac6f9e46566f -r d9cf08c6415c src/main/java/jp/ac/u_ryukyu/treevnc/client/EchoClient.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/EchoClient.java Sat Dec 21 18:46:54 2013 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/EchoClient.java Tue Dec 31 09:13:07 2013 +0900 @@ -89,9 +89,9 @@ } catch (IOException e) { return false; } catch (NullPointerException e) { - openport(); + //openport(); System.out.println("notFoundParents"); - notfoundParent(); + //notfoundParent(); } } return true; @@ -149,9 +149,10 @@ if (!("1".equals(leaderFlag))) { ServerSocket waitReplyServer = new ServerSocket(9999); Socket socketForWait = waitReplyServer.accept(); - BufferedReader isNotLeader = new BufferedReader(new InputStreamReader( - socketForWait.getInputStream())); - System.out.println("-------------------renode----------------------------"); + BufferedReader isNotLeader = new BufferedReader( + new InputStreamReader(socketForWait.getInputStream())); + System.out + .println("-------------------renode----------------------------"); if ((parentAddress = isNotLeader.readLine()) != null) { System.out.println("Server: " + parentAddress); } @@ -167,7 +168,8 @@ e.printStackTrace(); } } else { - System.out.println("-------------------re----------------------------"); + System.out + .println("-------------------re----------------------------"); if ((parentAddress = is.readLine()) != null) { System.out.println("Server: " + parentAddress); } @@ -186,14 +188,15 @@ try { client.closeApp(); // set Socket for connection in VncViewer. - Socket soc = createSocketForClient(echoSocket,false); + Socket soc = createSocketForClient(echoSocket, false); client.setSocket(soc); - if(soc != null) + if (soc != null) client.run(); + break; } catch (IOException e) { break; - //continue; + // continue; } } } @@ -250,15 +253,12 @@ } // create socket for ReConnection. - public Socket createSocketForClient(Socket soc,boolean flag) throws IOException { - Socket socket = null; + public Socket createSocketForClient(Socket soc, boolean flag) throws IOException { + Socket socket = null; String parentAddress; - int count = 0; - + int count = 0; System.out.println("########################PATH************************"); - - BufferedReader is = new BufferedReader(new InputStreamReader( - soc.getInputStream())); + BufferedReader is = new BufferedReader(new InputStreamReader(soc.getInputStream())); parentAddress = is.readLine(); String port = is.readLine(); // It is called when the screen changes. @@ -266,6 +266,7 @@ while (true) { try { client.setOpenPort(Integer.parseInt(port)); + System.out.println("----------:"+this.parentAddress+"----------:"+port); return new Socket(this.parentAddress, Integer.parseInt(port)); } catch (IOException e) { @@ -279,23 +280,25 @@ continue; } } - } else { - System.out.println("###########################faild"+parentAddress); - if(parentAddress==null) + } else { + System.out.println("###########################faild" + parentAddress+"port::"+port); + if (parentAddress == null) return null; - is.readLine();// parentNum + is.readLine();// parentNum } - socket = new Socket(parentAddress,Integer.parseInt(port)); + socket = new Socket(parentAddress, Integer.parseInt(port)); socket.setReuseAddress(true); + System.out.println("Return Soket"); return socket; } public String getParentsAddress() { return parentAddress; } - + public void reportConnectionFinished(Socket soc) throws IOException { DataOutputStream os = new DataOutputStream(soc.getOutputStream()); os.writeBytes("finished"); } + } \ No newline at end of file diff -r ac6f9e46566f -r d9cf08c6415c src/main/java/jp/ac/u_ryukyu/treevnc/client/WaitReply.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/WaitReply.java Sat Dec 21 18:46:54 2013 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/WaitReply.java Tue Dec 31 09:13:07 2013 +0900 @@ -32,14 +32,17 @@ clientSocket = echoServer.accept(); if (clientSocket != null) { echo.client.setTeminationType(true); - echo.client.stop(); + //echo.client.closeApp(); + passflag = true; echo.client.closeApp(); - passflag = true; + System.out.println("8888888888888888888888waitreply"); echo.client.setSocket(echo.createSocketForClient(clientSocket,true)); echo.client.run(); echoServer.close(); //report finished connection to server. echo.reportConnectionFinished(clientSocket); + //echo.client.stop(); + clientSocket.close(); } diff -r ac6f9e46566f -r d9cf08c6415c src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptClient.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptClient.java Sat Dec 21 18:46:54 2013 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptClient.java Tue Dec 31 09:13:07 2013 +0900 @@ -22,11 +22,6 @@ public AcceptClient() { // this.name = name; } - - /* - * public AcceptClient() { new CreateThread(this); } - */ - public void transferParentAddrerss(BufferedReader is, PrintStream os) { try { while (true) { @@ -145,7 +140,8 @@ private void replyLeaderNode(PrintStream os, BufferedReader is, String port, int treeNumber) throws IOException, InterruptedException { String lastNode = ls.getLast(); - if(lastNode != ls.get(treeNumber)){ + String checkSameHost = ls.get(treeNumber); + if(lastNode != checkSameHost){ os.println(lastNode); } replyNodeInformation(port); @@ -153,12 +149,13 @@ passCheck = 1; reportLastNode(lastNode, newparent, port, String.valueOf(parentnum), sendleaderflag); listupdate(port); - if(lastNode != ls.get(treeNumber)) { - os.println(port); + if(lastNode != checkSameHost) { + os.println(this.port); os.println(treeNumber); } leaderflag = decisionLeader(treeNumber, treebranch); - lostNodeConnection(treeNumber, lastNode, port); + if(ls.size() > treeNumber +1) + lostNodeConnection(treeNumber, lastNode, this.port); Thread.sleep(intv_time); is.close(); os.close(); @@ -175,9 +172,10 @@ DataOutputStream os = new DataOutputStream(clients.getOutputStream()); System.out.println("hostnode" + hostNode + "::port" + port); os.writeBytes(hostNode + "\n"); - // os.writeBytes(port+"\n"); + os.writeBytes(port+"\n"); os.writeBytes(String.valueOf(treeNum + 1) + "\n"); os.close(); + clients.close(); } } } @@ -240,10 +238,8 @@ System.out.println(newchild + "connect"); // echoSocket = new Socket(newchild, 10001 + (i + 1)); echoSocket = new Socket(newchild, 10001); - DataOutputStream os = new DataOutputStream( - echoSocket.getOutputStream()); - BufferedReader is = new BufferedReader(new InputStreamReader( - echoSocket.getInputStream())); + DataOutputStream os = new DataOutputStream(echoSocket.getOutputStream()); + BufferedReader is = new BufferedReader(new InputStreamReader(echoSocket.getInputStream())); os.writeBytes(newparent + "\n"); os.writeBytes(this.port+"\n"); os.writeBytes(newpnum + "\n"); diff -r ac6f9e46566f -r d9cf08c6415c src/main/java/jp/ac/u_ryukyu/treevnc/server/GetBroadCastProxy.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/GetBroadCastProxy.java Sat Dec 21 18:46:54 2013 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/GetBroadCastProxy.java Tue Dec 31 09:13:07 2013 +0900 @@ -22,7 +22,7 @@ public GetBroadCastProxy(VncProxyService _vps,String desktopName,String host){ vps = _vps; - bCast = new BroadCastProxy(vps.myRfb.getAcceptPort()+":"+host+":" + bCast = new BroadCastProxy(vps.getRfb().getAcceptPort()+":"+host+":" +desktopName+":"+getMyAddress()+":"); } diff -r ac6f9e46566f -r d9cf08c6415c src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java Sat Dec 21 18:46:54 2013 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java Tue Dec 31 09:13:07 2013 +0900 @@ -311,6 +311,8 @@ bufs.addFirst(header); // if(dataLen<=64000) multicastqueue.put(bufs); + + // is.reset(); /* @@ -522,5 +524,15 @@ byte[] b = new byte[0]; in.readBytes(b); } + + @Override + public boolean getReadyReconnect() { + return readyReconnect; + } + + @Override + public void setReadyReconnect(boolean ready) { + readyReconnect = ready; + } } diff -r ac6f9e46566f -r d9cf08c6415c src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java Sat Dec 21 18:46:54 2013 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java Tue Dec 31 09:13:07 2013 +0900 @@ -67,7 +67,7 @@ logger.info("TightVNC Viewer version " + ver()); isApplet = false; } - + public VncProxyService() { // connectionParams = new ConnectionParams(); settings = ProtocolSettings.getDefaultSettings(); @@ -101,22 +101,15 @@ System.exit(0); } VncProxyService vps = new VncProxyService(); - vps.initProxy1(argv, mainArgs, parser); + vps.initProxy1("localhost"); } - private void initProxy1(String[] argv, String[] mainArgs, Parser parser) { + private void initProxy1(String hostName) { myRfb = new MyRfbProtoProxy(); - initProxy(parser); - if (mainArgs.length != 0) { - for (int i = 0; i < argv.length; i++) { - setArguments(mainArgs); - // write later - } - } else { - // getHostData(); - } + aClient = new AcceptClient(); + isApplet = false; setIsTreeVNC(true); - setConnectionParam("localhost",5900); + setConnectionParam(hostName,5900); isApplet = true; run(); createConnectionAndStart(); @@ -171,7 +164,7 @@ printUsage(parser.optionsUsage()); System.exit(0); } - initProxy1(argv, mainArgs, parser); + initProxy1("localhost"); } @Override @@ -209,11 +202,12 @@ new InputStreamReader( clientSocket.getInputStream())); String newHostName = is.readLine(); - int width = Integer.parseInt(is.readLine()); - int height = Integer.parseInt(is.readLine()); + //int width = Integer.parseInt(is.readLine()); + //int height = Integer.parseInt(is.readLine()); // String screenSize = is.readLine(); + System.out.println(newHostName); if (permitChangeScreen()) { - changeVNCServer(newHostName, width, height); + changeVNCServer(newHostName, 3200, 1980); } else { continue; } @@ -246,10 +240,10 @@ boolean passFlag = false; for (String client : clientList) { if (passFlag) { - Socket echoSocket; - echoSocket = new Socket(client, 10001); + Socket echoSocket = new Socket(client, 10001); DataOutputStream os = new DataOutputStream( echoSocket.getOutputStream()); + System.out.println(client); os.writeBytes("reconnection\n"); os.writeBytes(port + "\n"); os.close(); @@ -275,16 +269,35 @@ // newVps.fbWidth = width; // newVps.fbHeight = height; // run call and change workingProtocol - newVps.connectionParams.setHostName(hostName); + newVps.setConnectionParam(hostName, 5900); + newVps.initProxy1(hostName); + orderRecconection(newVps ,hostName); socketClose(); - newVps.createConnectionAndStart(); - newVps.createSocketAndSend(aClient.getList(), hostName, - String.valueOf(newVps.opendPort)); } @Override public void settingsChanged(SettingsChangedEvent event) { } - + + public void orderRecconection(VncProxyService vps,String hostName) throws UnknownHostException, IOException { + int count = 0; + while(true) { + if(vps.myRfb.getReadyReconnect()) { + vps.createSocketAndSend(aClient.getList(), hostName, String.valueOf(vps.opendPort)); + break; + } else { + try { + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } + if(count++ > 40) { + break; + } else { + continue; + } + } + } + } } diff -r ac6f9e46566f -r d9cf08c6415c src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java --- a/src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java Sat Dec 21 18:46:54 2013 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java Tue Dec 31 09:13:07 2013 +0900 @@ -20,12 +20,12 @@ vps.proxyStart(args,width,height); } else if (viewer) { Viewer v = new Viewer(); - v.startViewer(args); + v.startViewer(); } else { //MyVncClient mvc = new MyVncClient(); //mvc.startClient(args); Viewer v = new Viewer(); - v.startViewer(args); + v.startViewer(); } } diff -r ac6f9e46566f -r d9cf08c6415c src/viewer_swing/java/com/glavsoft/viewer/Viewer.java --- a/src/viewer_swing/java/com/glavsoft/viewer/Viewer.java Sat Dec 21 18:46:54 2013 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/Viewer.java Tue Dec 31 09:13:07 2013 +0900 @@ -44,6 +44,7 @@ import java.util.jar.Manifest; import java.util.logging.*; +import jp.ac.u_ryukyu.treevnc.AcceptThread; import jp.ac.u_ryukyu.treevnc.CreateConnectionParam; import jp.ac.u_ryukyu.treevnc.MyRfbProto; import jp.ac.u_ryukyu.treevnc.client.GetDataClient; @@ -66,7 +67,7 @@ private volatile boolean isAppletStopped = false; private ConnectionPresenter connectionPresenter; private boolean isTreeVNC = false; - public MyRfbProto myRfb; + protected MyRfbProto myRfb; public static void main(String[] args) { Parser parser = new Parser(); @@ -232,7 +233,7 @@ } SwingViewerWindowFactory viewerWindowFactory = new SwingViewerWindowFactory(isSeparateFrame, isApplet, this); - + connectionPresenter.setConnectionWorkerFactory( new SwingConnectionWorkerFactory(connectionView.getFrame(), passwordFromParams, connectionPresenter, viewerWindowFactory, myRfb)); @@ -274,9 +275,12 @@ // must write } - public void setSocket(Socket soc) { - // TODO Auto-generated method stub - + public void setSocket(Socket soc) { + System.out.println("----------------------------"+soc.getInetAddress().getHostAddress()); + System.out.println("----------------------------"+soc.getPort()); + setConnectionParam(soc.getInetAddress().getHostAddress(),soc.getPort()); + //Thread accThread = new Thread(new AcceptThread(myRfb, soc.getPort())); + //accThread.start(); } public void setOpenPort(int parseInt) { @@ -285,16 +289,18 @@ } public void setTeminationType(boolean b) { - // TODO Auto-generated method stub + myRfb.setTerminationType(b); } - public void startViewer(String[] args) { + public void startViewer() { Viewer viewer = new Viewer(); - CreateConnectionParam cp = new CreateConnectionParam(new MyRfbProtoClient()); + MyRfbProtoClient rfb = new MyRfbProtoClient(); + CreateConnectionParam cp = new CreateConnectionParam(rfb); cp.communicationToProxy(); cp.createConnectionParam(viewer); viewer.isTreeVNC = true; - + rfb.setViewer(viewer); + viewer.myRfb = rfb; SwingUtilities.invokeLater(viewer); } @@ -307,6 +313,10 @@ public void setIsTreeVNC(boolean flag) { isTreeVNC = flag; } + + public MyRfbProto getRfb() { + return myRfb; + } } diff -r ac6f9e46566f -r d9cf08c6415c src/viewer_swing/java/com/glavsoft/viewer/swing/SwingRfbConnectionWorker.java --- a/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingRfbConnectionWorker.java Sat Dec 21 18:46:54 2013 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingRfbConnectionWorker.java Tue Dec 31 09:13:07 2013 +0900 @@ -45,6 +45,7 @@ import java.util.logging.Logger; import jp.ac.u_ryukyu.treevnc.MyRfbProto; +import jp.ac.u_ryukyu.treevnc.client.MyRfbProtoClient; import jp.ac.u_ryukyu.treevnc.server.MyRfbProtoProxy; /** @@ -116,8 +117,13 @@ workingProtocol, rfbSettings, uiSettings, connectionString, presenter); if(myRfb instanceof MyRfbProtoProxy) workingProtocol.startNormalHandling(this, viewerWindow.getSurface(), clipboardController, myRfb); - else + else if(myRfb instanceof MyRfbProtoClient) { + myRfb.setProtocolContext(workingProtocol); + myRfb.notProxy(); + workingProtocol.startTreeClientHandling(this, viewerWindow.getSurface(), clipboardController,myRfb); + } else { workingProtocol.startNormalHandling(this, viewerWindow.getSurface(), clipboardController); + } presenter.showMessage("Started"); presenter.successfulRfbConnection(); diff -r ac6f9e46566f -r d9cf08c6415c src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java --- a/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java Sat Dec 21 18:46:54 2013 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java Tue Dec 31 09:13:07 2013 +0900 @@ -42,6 +42,7 @@ import javax.swing.border.EmptyBorder; import java.awt.*; import java.awt.event.*; +import java.io.IOException; import java.util.LinkedList; import java.util.List; import java.util.concurrent.Executors; @@ -50,6 +51,8 @@ import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import jp.ac.u_ryukyu.treevnc.server.MyRfbProtoProxy; + public class SwingViewerWindow implements IChangeSettingsListener { public static final int FS_SCROLLING_ACTIVE_BORDER = 20; private JToggleButton zoomFitButton; @@ -164,7 +167,11 @@ // frame.pack(); outerPanel.setSize(surface.getPreferredSize()); internalPack(null); - frame.setVisible(true); + if(viewer.getRfb() instanceof MyRfbProtoProxy) + frame.setVisible(false); + else + frame.setVisible(true); + //frame.setVisible(false); frame.validate(); } else { appletWindow.setLayout(new BorderLayout(0, 0)); @@ -799,6 +806,18 @@ } }); kbdButtons.add(altButton); + + JButton screenButton = buttonsBar.createButton("display", "change screen", new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + try { + viewer.getRfb().screenChangeRequest(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + }); + kbdButtons.add(screenButton); ModifierButtonEventListener modifierButtonListener = new ModifierButtonEventListener(); modifierButtonListener.addButton(KeyEvent.VK_CONTROL, ctrlButton);