# HG changeset patch # User Tatsuki IHA # Date 1453278058 -32400 # Node ID 752788fdae038a4fdb50337fbef2f5926af1db84 # Parent cafbff8d5b0913736bed302556b18edaef2503a2 Add socket read time out diff -r cafbff8d5b09 -r 752788fdae03 .idea/workspace.xml --- a/.idea/workspace.xml Tue Jan 19 17:41:46 2016 +0900 +++ b/.idea/workspace.xml Wed Jan 20 17:20:58 2016 +0900 @@ -3,7 +3,8 @@ - + + @@ -38,7 +39,7 @@ - + @@ -51,24 +52,10 @@ - - + + - - - - - - - - - - - - - - @@ -79,13 +66,10 @@ - + - - - - + @@ -97,11 +81,7 @@ - - - - - + @@ -110,11 +90,22 @@ - + + + + + + + + + + + - - - + + + + @@ -135,17 +126,7 @@ - - - - - - - - - - - + @@ -174,11 +155,11 @@ - + - - + + @@ -188,31 +169,68 @@ - + + + + + + + + + + + + + + + + + + + + + - - + + - + - - + + - - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -232,65 +250,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -610,22 +569,22 @@ - @@ -652,7 +611,6 @@ - @@ -899,8 +857,9 @@ + - + @@ -1335,7 +1294,7 @@ - + @@ -1343,25 +1302,25 @@ + - + - + + - + - - @@ -1478,7 +1437,7 @@ file://$PROJECT_DIR$/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingRfbConnectionWorker.java - 100 + 101 @@ -1501,12 +1460,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1939,11 +1876,7 @@ - - - - - + @@ -1986,29 +1919,11 @@ - - - - - - - - - - - - - - - - - - - + @@ -2028,14 +1943,6 @@ - - - - - - - - @@ -2071,22 +1978,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + - + - + + + + + + + + + @@ -2095,19 +2030,7 @@ - - - - - - - - - - - - - + @@ -2119,22 +2042,18 @@ - + - - - - - - + + - + - - + + @@ -2142,62 +2061,73 @@ - - - - + + + + + + + + + + - + - - - - + - + - - - - - - - + + - + - - + + + + + + + + + + - - + + - + - - - + + + + + + + + diff -r cafbff8d5b09 -r 752788fdae03 src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java --- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Tue Jan 19 17:41:46 2016 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Wed Jan 20 17:20:58 2016 +0900 @@ -117,15 +117,6 @@ @Override public void run() { isRunning = true; - if (rfb.isTreeManager()) { - timer = new Timer("framebufferUpdate-request-timer", true); - timer.schedule(new TimerTask() { - @Override - public void run() { - context.sendMessage(new FramebufferUpdateRequestMessage(rfb.getX(), rfb.getY(), rfb.frameSizeWidth * rfb.getRetinaScale(), rfb.frameSizeHeight * rfb.getRetinaScale(), false)); - } - }, 0, 100); - } while (isRunning) { try { reader.available(); @@ -166,6 +157,12 @@ logger.severe("Unsupported server message. Id = " + messageId); } } catch (TransportException e) { + if (e.getCause().getClass().getSimpleName().equals("SocketTimeoutException")) { + if (rfb.isTreeManager()) { + context.sendMessage(new FramebufferUpdateRequestMessage(rfb.getX(), rfb.getY(), rfb.frameSizeWidth * rfb.getRetinaScale(), rfb.frameSizeHeight * rfb.getRetinaScale(), false)); + } + continue; + } logger.severe("Close session : ReceiverTask : " + e.getMessage()); if(!rfb.isTreeManager() && !(rfb.getTerminationType())) { System.out.println("death parent node, wait connect new parent node."); @@ -367,6 +364,8 @@ logger.fine("sent: " + pixelFormat); context.sendRefreshMessage(); logger.fine("sent: nonincremental fb update"); + } else { + context.sendMessage(new FramebufferUpdateRequestMessage(rfb.getX(), rfb.getY(), rfb.frameSizeWidth * rfb.getRetinaScale(), rfb.frameSizeHeight * rfb.getRetinaScale(), false)); } } } @@ -384,10 +383,6 @@ public void stopTask() { isRunning = false; - if (timer != null) { - timer.cancel(); - timer.purge(); - } } private void connectionFinished() { diff -r cafbff8d5b09 -r 752788fdae03 src/viewer_swing/java/com/glavsoft/viewer/swing/SwingRfbConnectionWorker.java --- a/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingRfbConnectionWorker.java Tue Jan 19 17:41:46 2016 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingRfbConnectionWorker.java Wed Jan 20 17:20:58 2016 +0900 @@ -40,6 +40,7 @@ import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.net.Socket; +import java.net.SocketException; import java.util.List; import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; @@ -173,6 +174,11 @@ if(!myRfb.getCuiVersion()) viewerWindow = viewerWindowFactory.createViewerWindow(workingProtocol, rfbSettings, uiSettings, connectionString, presenter); workingProtocol.startNormalHandling(this,viewerWindow.getSurface(), clipboardController, myRfb); + try { + workingSocket.setSoTimeout(100); + } catch (SocketException e) { + e.printStackTrace(); + } presenter.showMessage("Started"); if(!myRfb.getCuiVersion())