changeset 242:a640cd7001e1

fix checkdelay, and fix serial number option
author oc
date Mon, 13 Oct 2014 17:23:57 +0900
parents b21a7842a41d
children 0ed7719c1800
files src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java src/main/java/jp/ac/u_ryukyu/treevnc/SendCheckDelay.java src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java
diffstat 3 files changed, 14 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Mon Oct 13 13:16:49 2014 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Mon Oct 13 17:23:57 2014 +0900
@@ -109,10 +109,9 @@
             try {
                 if(! rfb.isTreeManager()) {
                     // client has 8byte packet sequence number
-                    reader.mark(28);
-                    if (rfb.addSerialNum) {
-                        getLost(reader); //check seq consistency
-                    }
+                    // add serial number flag (4byte)
+                    reader.mark(20+8+4);
+                    getLost(reader); //check seq consistency
                 } else {
                     reader.mark(20);
                 }
@@ -267,8 +266,7 @@
                 context.sendMessage(new FramebufferUpdateRequestMessage(0, 0, rect.width, rect.height, false));
                 //				repaintController.repaintCursor();
             } else if (rect.getEncodingType() == EncodingType.CHECK_DELAY) {
-                int length = reader.readInt32();
-                int checkDelaySize = length + 24;
+                int checkDelaySize = 24;
                 reader.reset();
                 rfb.readSendData(checkDelaySize, reader, null);
                 int port = rfb.acceptPort;
@@ -315,6 +313,7 @@
     }
 
     private void getLost(Reader reader) throws Exception {
+        int addSerialNumFlag = reader.readInt32();
         long num = reader.readInt64();
         if(num != ++checkCounter) {
             System.out.println("LostData" + (num - checkCounter));
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/SendCheckDelay.java	Mon Oct 13 13:16:49 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/SendCheckDelay.java	Mon Oct 13 17:23:57 2014 +0900
@@ -20,9 +20,7 @@
         LinkedList<ByteBuffer> checkdelay = new LinkedList<ByteBuffer>();
         long time = System.currentTimeMillis();
         checkdelay.add(new CheckDelay(0, 0, 0, 0, time, EncodingType.CHECK_DELAY).getMessage());
-        if (rfb.addSerialNum) {
-            rfb.addSerialNumber(checkdelay);
-        }
+        rfb.addSerialNumber(checkdelay);
         rfb.multicastqueue.put(checkdelay);
     }
     
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java	Mon Oct 13 13:16:49 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java	Mon Oct 13 17:23:57 2014 +0900
@@ -435,15 +435,14 @@
         int width = context.getFbWidth();
         int height = context.getFbHeight();
         desktopSize.add(new UpdateRectangleMessage(width, height, EncodingType.INIT_DATA, context.getInitData(),id).getMessage());
-        if (addSerialNum) {
-            addSerialNumber(desktopSize);
-        }
+        addSerialNumber(desktopSize);
         multicastqueue.put(desktopSize);
     }
 
 
     public void addSerialNumber(LinkedList<ByteBuffer> bufs) {
-        ByteBuffer serialNum = multicastqueue.allocate(8);
+        ByteBuffer serialNum = multicastqueue.allocate(4+8); // addSerialNum flag + SerialNum
+        serialNum.putInt(1);
         serialNum.putLong(counter++);
         serialNum.flip();
         bufs.addFirst(serialNum);
@@ -565,10 +564,10 @@
             throws TransportException, UnsupportedEncodingException {
         LinkedList<ByteBuffer> bufs = new LinkedList<ByteBuffer>();
         ByteBuffer header = multicastqueue.allocate(16);
-        ByteBuffer serial = multicastqueue.allocate(8);
+        ByteBuffer serial = multicastqueue.allocate(4+8);
         if (!isTreeManager()) {
-            reader.readBytes(serial.array(),0,8);
-            serial.limit(8);
+            reader.readBytes(serial.array(),0,4+8);
+            serial.limit(4+8);
         }
         reader.mark(dataLen);
         reader.readBytes(header.array(), 0, 16);
@@ -605,9 +604,7 @@
                     blen.flip();
                     bufs.addFirst(blen);
                     bufs.addFirst(header);
-                    if (addSerialNum) {
-                        addSerialNumber(bufs);
-                    }
+                    addSerialNumber(bufs);
                     multicastqueue.put(bufs);
                 } catch (DataFormatException e) {
                     throw new TransportException(e);
@@ -625,9 +622,7 @@
                 b.limit(dataLen - 16);
                 bufs.add(b);
             }
-            if (addSerialNum) {
-                this.addSerialNumber(bufs);
-            }
+            this.addSerialNumber(bufs);
             multicastqueue.put(bufs);
 
             return;