changeset 302:7ef19658eb41

add createOriginalInitData().
author oc
date Mon, 19 Jan 2015 22:39:02 +0900
parents ae7deb002b5f
children 1526c99f5d21
files src/main/java/com/glavsoft/rfb/protocol/ProtocolContext.java src/main/java/com/glavsoft/rfb/protocol/state/HandshakeState.java src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java src/main/java/jp/ac/u_ryukyu/treevnc/TreeVncCommand.java src/main/java/jp/ac/u_ryukyu/treevnc/TreeVncCommandChannelListener.java src/main/java/jp/ac/u_ryukyu/treevnc/TreeVncProtocol.java src/viewer_swing/java/com/glavsoft/viewer/swing/gui/ConnectionsHistory.java
diffstat 7 files changed, 77 insertions(+), 63 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/com/glavsoft/rfb/protocol/ProtocolContext.java	Sun Jan 18 08:36:06 2015 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/ProtocolContext.java	Mon Jan 19 22:39:02 2015 +0900
@@ -86,7 +86,7 @@
      * 
      */
     public enum TreeCommand { 
-        FIND_ROOT ( 220),
+        FIND_ROOT (220),
         FIND_ROOT_REPLY   (221),
         WHERE_TO_CONNECT  (222), 
         CONNECT_TO  (223),
@@ -112,7 +112,7 @@
             case 226: return NOT_FOUND_PARENT ;
             case 227: return NEW_NODE ;
             case 228: default:
-                return QUIT_LOOP; 
+                return QUIT_LOOP;
             }
         }
     }
--- a/src/main/java/com/glavsoft/rfb/protocol/state/HandshakeState.java	Sun Jan 18 08:36:06 2015 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/state/HandshakeState.java	Mon Jan 19 22:39:02 2015 +0900
@@ -38,6 +38,7 @@
 	public static final String PROTOCOL_VERSION_3_7 = "3.7";
 	public static final String PROTOCOL_VERSION_3_3 = "3.3";
 	public static final int PROTOCOL_STRING_LENGTH = 12;
+
 	private static final String PROTOCOL_STRING_REGEXP = "^RFB (\\d\\d\\d).(\\d\\d\\d)\n$";
 
 	private static final int MIN_SUPPORTED_VERSION_MAJOR = 3;
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java	Sun Jan 18 08:36:06 2015 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java	Mon Jan 19 22:39:02 2015 +0900
@@ -81,7 +81,7 @@
         rThread = new RequestScreenThread(this);
         nets.setMyRfb(this);
         this.isTreeManager = isTreeManager;
-        this.socket = createSocket();
+//        this.socket = createSocket();
     }
 
     public boolean isTreeManager() {
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/TreeVncCommand.java	Sun Jan 18 08:36:06 2015 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeVncCommand.java	Mon Jan 19 22:39:02 2015 +0900
@@ -21,7 +21,7 @@
     private short value;
     public String intf;
 
-    public TreeVncCommand(TreeRFBProto rfb,String myHostName, TreeCommand command, int port, String hostname, String intf, short value) {
+public TreeVncCommand(TreeRFBProto rfb, String myHostName, TreeCommand command, int port, String hostname, String intf, short value) {
         this.rfb = rfb;
         this.myHostName = myHostName;
         this.hostname = hostname;
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/TreeVncCommandChannelListener.java	Sun Jan 18 08:36:06 2015 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeVncCommandChannelListener.java	Mon Jan 19 22:39:02 2015 +0900
@@ -163,7 +163,7 @@
 
     byte[] readVersionMsg(Reader reader, Writer writer) throws IOException, TransportException {
 
-        byte[] b = new byte[HandshakeState.PROTOCOL_STRING_LENGTH ];
+        byte[] b = new byte[HandshakeState.PROTOCOL_STRING_LENGTH];
 
         reader.readBytes(b);
 
@@ -218,18 +218,32 @@
         in.readBytes(b);
     }
 
-    byte initData[] = {7, -128, 4, 56, 32, 24, 0, 1, 0, -1, 0, -1, 0, -1, 16, 8, 0, 0, 0, 0, 0, 0, 0, 7, 103, 105, 114, 101, 102, 108, 121};
     void sendInitData(Writer os) throws TransportException {
+        int hdWidth = 1920;
+        int hdHeight = 1080;
+        byte[] initData = createOriginalInitData(hdWidth, hdHeight);
         // In case of "-d" we have no context
         ProtocolContext context = rfb.context;
         if (context != null){
-            os.write(context.getInitData());
+//            os.write(context.getInitData());
+            os.write(initData);
         } else {
             // Send dummy data
             os.write(initData);
         }
     }
 
+    private byte[] createOriginalInitData(int width, int height) {
+        byte[] tail = {32, 24, 0, 1, 0, -1, 0, -1, 0, -1, 16, 8, 0, 0, 0, 0, 0, 0, 0, 7, 103, 105, 114, 101, 102, 108, 121};
+        ByteBuffer initData = ByteBuffer.allocate(31);
+        initData.putChar((char) width);
+        initData.putChar((char) height);
+        initData.put(tail);
+        initData.flip();
+
+        return initData.array();
+    }
+
     public void waitForShutdown() {
         if (acceptThread!=null)
             try {
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/TreeVncProtocol.java	Sun Jan 18 08:36:06 2015 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeVncProtocol.java	Mon Jan 19 22:39:02 2015 +0900
@@ -7,72 +7,71 @@
 import com.glavsoft.rfb.protocol.ProtocolContext.TreeCommand;
 
 public class TreeVncProtocol {
-	private BufferedReader is = null;
-	private DataOutputStream os = null;
-	private Socket echoSocket = null;
-	private int rootPort;
-	private String rootAddress;
+    private BufferedReader is = null;
+    private DataOutputStream os = null;
+    private Socket echoSocket = null;
+    private int rootPort;
+    private String rootAddress;
     private int singleWidth;
     private int singleHeight;
-	
-	public TreeVncProtocol(String name, int echoPort) {
-		this.rootPort = echoPort;
-		this.rootAddress = name;
-	}
+
+    public TreeVncProtocol(String name, int echoPort) {
+        this.rootPort = echoPort;
+        this.rootAddress = name;
+    }
 
     public void setSingleSize(int singleWidth, int singleHeight) {
         this.singleWidth = singleWidth;
         this.singleHeight = singleHeight;
     }
 
-	public void openport() throws IOException {
-			echoSocket = new Socket(rootAddress, rootPort);
-			// echoSocket.setReuseAddress(true);
-			os = new DataOutputStream(echoSocket.getOutputStream());
-			is = new BufferedReader(new InputStreamReader(
-					echoSocket.getInputStream()));
-	}
+    public void openport() throws IOException {
+        echoSocket = new Socket(rootAddress, rootPort);
+        // echoSocket.setReuseAddress(true);
+        os = new DataOutputStream(echoSocket.getOutputStream());
+        is = new BufferedReader(new InputStreamReader(
+                echoSocket.getInputStream()));
+    }
 
-	public void findRootReply(int port) throws IOException {
-		sendWithHostAndPort(TreeCommand.FIND_ROOT_REPLY, null, port, (short) 0);
-	}
+    public void findRootReply(int port) throws IOException {
+        sendWithHostAndPort(TreeCommand.FIND_ROOT_REPLY, null, port, (short) 0);
+    }
 
-	public void whereToConnect(String hostname, int port) throws IOException {
+    public void whereToConnect(String hostname, int port) throws IOException {
         sendWithHostAndPort(TreeCommand.WHERE_TO_CONNECT, hostname, port, (short) 0);
-	}
+    }
 
-	public void connectTo(String hostname, int port,int leaderFlag, short yourId) throws IOException{
-	    TreeCommand command = leaderFlag == 1 ? TreeCommand.CONNECT_TO_AS_LEADER : TreeCommand.CONNECT_TO;
+    public void connectTo(String hostname, int port,int leaderFlag, short yourId) throws IOException{
+        TreeCommand command = leaderFlag == 1 ? TreeCommand.CONNECT_TO_AS_LEADER : TreeCommand.CONNECT_TO;
         sendWithHostAndPort(command , hostname, port, yourId);
- 	}
+    }
 
-	public void lostParent(String hostname, int port) throws IOException {
+    public void lostParent(String hostname, int port) throws IOException {
         sendWithHostAndPort(TreeCommand.LOST_PARENT, hostname, port, (short) 0);
-	}
-	
-	public void sendWithHostAndPort(TreeCommand command, String hostname, int port, short value)
-			throws IOException {
-		openport();
-		if (hostname == null) {
-			// in case of root finder, we can't get localaddress from datagram packet.
-			// so use local part of TCP socket.
-			hostname = echoSocket.getLocalAddress().getHostAddress();
-		}
-		int cmdlen = 4+4+4+hostname.length();
-		if (cmdlen < 12) cmdlen=12;
-		ByteBuffer buf = ByteBuffer.allocate(cmdlen);
-		buf.order(ByteOrder.BIG_ENDIAN);
-		buf.put((byte) command.cmd);
-		
-		buf.put((byte) 0);
-		buf.putShort(value);
-		buf.putInt(4+hostname.length()); // length
-		buf.putInt(port);
-		buf.put(hostname.getBytes(), 0, hostname.length());
-		while (buf.hasRemaining() ) buf.put((byte)0) ;
+    }
+
+    public void sendWithHostAndPort(TreeCommand command, String hostname, int port, short value)
+            throws IOException {
+        openport();
+        if (hostname == null) {
+            // in case of root finder, we can't get localaddress from datagram packet.
+            // so use local part of TCP socket.
+            hostname = echoSocket.getLocalAddress().getHostAddress();
+        }
+        int cmdlen = 4+4+4+hostname.length();
+        if (cmdlen < 12) cmdlen=12;
+        ByteBuffer buf = ByteBuffer.allocate(cmdlen);
+        buf.order(ByteOrder.BIG_ENDIAN);
+        buf.put((byte) command.cmd);
+        buf.put((byte) 0);
+        buf.putShort(value);
+        buf.putInt(4+hostname.length()); // length
+        buf.putInt(port);
+        buf.put(hostname.getBytes(), 0, hostname.length());
+        while (buf.hasRemaining() ) buf.put((byte)0) ;
         buf.flip();
-		sendCommandToTheRoot(buf);
-	}
+        sendCommandToTheRoot(buf);
+    }
 
     public void sendCommandToTheRoot(ByteBuffer buf) throws IOException {
         char[] charBuf = new char[12];
@@ -81,10 +80,10 @@
         streamClose();
     }
 
-	void streamClose() throws IOException {
-		os.close();
-		is.close();
-		echoSocket.close();
-	}
+    void streamClose() throws IOException {
+        os.close();
+        is.close();
+        echoSocket.close();
+    }
 
 }
\ No newline at end of file
--- a/src/viewer_swing/java/com/glavsoft/viewer/swing/gui/ConnectionsHistory.java	Sun Jan 18 08:36:06 2015 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/swing/gui/ConnectionsHistory.java	Mon Jan 19 22:39:02 2015 +0900
@@ -261,7 +261,7 @@
         if (uiSettingsData != null) {
             uiSettingsDataMap.put(new ConnectionParams(connectionParams), new UiSettingsData(uiSettingsData));
         }
-        uiSettingsData.setScalePercent(50);
+        uiSettingsData.setScalePercent(100);
     }
 
     /**