annotate src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java @ 378:60abae693629

Compare SerialNumber flag
author innparusu
date Tue, 01 Sep 2015 15:04:10 +0900
parents b6665f7f18d1
children aef5cbdd84ab
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
32
758d025ee24b add TextBox.java
one
parents: 31
diff changeset
1 package jp.ac.u_ryukyu.treevnc;
28
18fad65bc447 Create MyRfbProto.java
one
parents:
diff changeset
2
18fad65bc447 Create MyRfbProto.java
one
parents:
diff changeset
3 import java.io.IOException;
206
2b3eb4a9492f MyRfbProto reorganization
oc
parents: 205
diff changeset
4 import java.io.OutputStream;
232
6ee4cdca104c send value of port and localhost in checkdelay framebufferupdate, and get this.
oc
parents: 231
diff changeset
5 import java.io.UnsupportedEncodingException;
291
a310be14d757 send rtp+sound packet(client node version).
oc
parents: 290
diff changeset
6 import java.net.*;
28
18fad65bc447 Create MyRfbProto.java
one
parents:
diff changeset
7 import java.nio.ByteBuffer;
109
457f9dfbf7ce minor fix.
oc
parents: 107
diff changeset
8 import java.nio.ByteOrder;
369
2d01ec1c02d2 Fix ReConnectingFlag
innparusu
parents: 367
diff changeset
9 import java.util.Enumeration;
232
6ee4cdca104c send value of port and localhost in checkdelay framebufferupdate, and get this.
oc
parents: 231
diff changeset
10 import java.util.Iterator;
28
18fad65bc447 Create MyRfbProto.java
one
parents:
diff changeset
11 import java.util.LinkedList;
18fad65bc447 Create MyRfbProto.java
one
parents:
diff changeset
12 import java.util.concurrent.atomic.AtomicInteger;
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
13 import java.util.zip.DataFormatException;
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
14 import java.util.zip.Deflater;
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
15 import java.util.zip.Inflater;
150
925fb2090282 minor fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 147
diff changeset
16
28
18fad65bc447 Create MyRfbProto.java
one
parents:
diff changeset
17 import com.glavsoft.exceptions.TransportException;
107
660b296d4f75 send change screen command throw the tree.
oc
parents: 103
diff changeset
18 import com.glavsoft.rfb.client.ClientToServerMessage;
96
76e49dd9c9c5 Client resize without reconnection
oc
parents: 94
diff changeset
19 import com.glavsoft.rfb.encoding.EncodingType;
264
83d0256a8808 add fixing display filter.
oc
parents: 257
diff changeset
20 import com.glavsoft.rfb.encoding.decoder.FramebufferUpdateRectangle;
28
18fad65bc447 Create MyRfbProto.java
one
parents:
diff changeset
21 import com.glavsoft.rfb.protocol.Protocol;
18fad65bc447 Create MyRfbProto.java
one
parents:
diff changeset
22 import com.glavsoft.rfb.protocol.ProtocolContext;
18fad65bc447 Create MyRfbProto.java
one
parents:
diff changeset
23 import com.glavsoft.transport.Reader;
18fad65bc447 Create MyRfbProto.java
one
parents:
diff changeset
24 import com.glavsoft.transport.Writer;
153
e68dfd1972ac fix bad names.
oc
parents: 150
diff changeset
25 import com.glavsoft.viewer.ViewerInterface;
174
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
26 import com.glavsoft.viewer.swing.ConnectionParams;
28
18fad65bc447 Create MyRfbProto.java
one
parents:
diff changeset
27
124
214d4f206431 add TreeVNC command number.
oc
parents: 123
diff changeset
28
207
b31903e5b02d rename myRFBProto
oc
parents: 206
diff changeset
29 public class TreeRFBProto {
231
0e0e6744432c get new nodeList for checkDelay.
oc
parents: 230
diff changeset
30
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
31 final static int FramebufferUpdateRequest = 3;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
32 final static int CheckDelay = 11;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
33 protected final static int FramebufferUpdate = 0;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
34 protected ProtocolContext context;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
35 private int clients = 0;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
36 public MulticastQueue<LinkedList<ByteBuffer>> multicastqueue = new MulticastQueue<LinkedList<ByteBuffer>>();
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
37 private RequestScreenThread rThread;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
38 public int acceptPort = 0;
174
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
39 private String myAddress;
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
40 private long counter = 0; // packet serial number
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
41 public ServerSocket servSock;
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
42 private static final int INFLATE_BUFSIZE = 1024 * 100;
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
43 private Inflater inflater = new Inflater();
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
44 private Deflater deflater = new Deflater();
174
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
45 ViewerInterface viewer;
341
1d9a4099ad44 change hasParent value.
oc
parents: 340
diff changeset
46 private short id = 0; // my tree node id ( = 0 in root ), -1 means no parent
174
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
47 private TreeVncCommandChannelListener acceptThread;
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
48 private TreeRootFinderListener getCast;
176
fa6cfb85444e on going ...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
49 private CreateConnectionParam cp;
205
614db20d8fab try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 204
diff changeset
50 private TreeVNCNetwork nets = new TreeVNCNetwork();
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
51 private TreeVncRootSelectionPanel rootSelectionPanel;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
52 private String vncInterface;
231
0e0e6744432c get new nodeList for checkDelay.
oc
parents: 230
diff changeset
53 public LinkedList<TreeVNCNode> nodeList;
267
5f697251860b add --filterSingleDisplay option.
oc
parents: 266
diff changeset
54
5f697251860b add --filterSingleDisplay option.
oc
parents: 266
diff changeset
55 protected boolean readyReconnect = false;
5f697251860b add --filterSingleDisplay option.
oc
parents: 266
diff changeset
56 private boolean cuiVersion;
5f697251860b add --filterSingleDisplay option.
oc
parents: 266
diff changeset
57 private boolean permitChangeScreen = true;
5f697251860b add --filterSingleDisplay option.
oc
parents: 266
diff changeset
58 private boolean leader;
5f697251860b add --filterSingleDisplay option.
oc
parents: 266
diff changeset
59 private boolean hasViewer = false;
5f697251860b add --filterSingleDisplay option.
oc
parents: 266
diff changeset
60 private boolean normalTermination;
5f697251860b add --filterSingleDisplay option.
oc
parents: 266
diff changeset
61 private boolean isTreeManager;
5f697251860b add --filterSingleDisplay option.
oc
parents: 266
diff changeset
62 public boolean showTreeNode = false;
240
7310e7d7a45f add option --checkDelay.
oc
parents: 239
diff changeset
63 public boolean checkDelay = false;
241
b21a7842a41d add option addSerialNum.
oc
parents: 240
diff changeset
64 public boolean addSerialNum = false;
257
11b59b223222 add function of fixing display size
oc
parents: 256
diff changeset
65 public boolean fixingSize = false;
267
5f697251860b add --filterSingleDisplay option.
oc
parents: 266
diff changeset
66 public boolean filterSingleDisplay = false;
5f697251860b add --filterSingleDisplay option.
oc
parents: 266
diff changeset
67
257
11b59b223222 add function of fixing display size
oc
parents: 256
diff changeset
68 public int frameSizeWidth;
11b59b223222 add function of fixing display size
oc
parents: 256
diff changeset
69 public int frameSizeHeight;
11b59b223222 add function of fixing display size
oc
parents: 256
diff changeset
70 public int fixingSizeWidth;
11b59b223222 add function of fixing display size
oc
parents: 256
diff changeset
71 public int fixingSizeHeight;
11b59b223222 add function of fixing display size
oc
parents: 256
diff changeset
72
306
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
73 private int singleWidth = 0;
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
74 private int singleHeight = 0;
301
ae7deb002b5f send and receive single display size
oc
parents: 298
diff changeset
75
293
d1ceb4b7097a add function receive sound.
oc
parents: 292
diff changeset
76 private DatagramSocket socket = null;
275
0f9b3de45fb2 set main display size.
oc
parents: 270
diff changeset
77
306
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
78 private byte[] originalInitData = null;
345
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
79 private boolean childrenMulticast = true;
306
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
80
327
293c35aa902b add error message, add assure stream close, delete firstTime value in TreeRFBProto.
oc
parents: 325
diff changeset
81 public TreeRFBProto(boolean isTreeManager, ViewerInterface viewer) {
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
82 rThread = new RequestScreenThread(this);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
83 nets.setMyRfb(this);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
84 this.isTreeManager = isTreeManager;
327
293c35aa902b add error message, add assure stream close, delete firstTime value in TreeRFBProto.
oc
parents: 325
diff changeset
85 this.viewer = viewer;
302
7ef19658eb41 add createOriginalInitData().
oc
parents: 301
diff changeset
86 // this.socket = createSocket();
327
293c35aa902b add error message, add assure stream close, delete firstTime value in TreeRFBProto.
oc
parents: 325
diff changeset
87 if(isTreeManager()) {
293c35aa902b add error message, add assure stream close, delete firstTime value in TreeRFBProto.
oc
parents: 325
diff changeset
88 getCast = new TreeRootFinderListener(viewer);
293c35aa902b add error message, add assure stream close, delete firstTime value in TreeRFBProto.
oc
parents: 325
diff changeset
89 Thread treeRootFindThread = new Thread(getCast, "tree-root-find-listener");
293c35aa902b add error message, add assure stream close, delete firstTime value in TreeRFBProto.
oc
parents: 325
diff changeset
90 treeRootFindThread.start();
293c35aa902b add error message, add assure stream close, delete firstTime value in TreeRFBProto.
oc
parents: 325
diff changeset
91 }
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
92 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
93
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
94 public boolean isTreeManager() {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
95 return isTreeManager;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
96 }
207
b31903e5b02d rename myRFBProto
oc
parents: 206
diff changeset
97
378
60abae693629 Compare SerialNumber flag
innparusu
parents: 373
diff changeset
98 public boolean isAddSerialNum() {
60abae693629 Compare SerialNumber flag
innparusu
parents: 373
diff changeset
99 return addSerialNum;
60abae693629 Compare SerialNumber flag
innparusu
parents: 373
diff changeset
100 }
60abae693629 Compare SerialNumber flag
innparusu
parents: 373
diff changeset
101
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
102 public ProtocolContext getContext() {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
103 return context;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
104 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
105
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
106 /**
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
107 * handle new client accept
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
108 * it also handle TreeVNC Command
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
109 * @param newCli
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
110 * @param os
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
111 * @param is
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
112 * @throws IOException
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
113 * @throws TransportException
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
114 */
330
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
115 public void newClient(final Socket newCli,final Writer os, final Reader is) {
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
116 final int myId = clients;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
117 final MulticastQueue.Client<LinkedList<ByteBuffer>> c = multicastqueue.newClient();
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
118 final AtomicInteger writerRunning = new AtomicInteger();
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
119 writerRunning.set(1);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
120 /**
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
121 * Timeout thread. If a client is suspended, it has top of queue
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
122 * indefinitely, which caused memory overflow. After the timeout, we
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
123 * poll the queue and discard it. Start long wait if writer is running.
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
124 */
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
125 final Runnable timer = new Runnable() {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
126 public void run() {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
127 int count = 0;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
128 for (;;) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
129 long timeout = 50000 / 8;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
130 try {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
131 synchronized (this) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
132 int state, flag;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
133 writerRunning.set(0);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
134 wait(timeout);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
135 flag = 0;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
136 while ((state = writerRunning.get()) == 0) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
137 c.poll(); // discard, should be timeout
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
138 count++;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
139 if (flag == 0) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
140 System.out.println("Discarding " + myId
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
141 + " count=" + count);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
142 flag = 1;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
143 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
144 wait(10); // if this is too short, writer cannot
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
145 // take the poll, if this is too
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
146 // long, memory will overflow...
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
147 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
148 if (flag == 1)
328
1a2ab6bd5ba3 add function lost child node, remove deadChild nodeList.
oc
parents: 327
diff changeset
149 System.out.println("Resuming " + myId + " count=" + count);
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
150 if (state != 1) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
151 System.out.println("Client died " + myId);
328
1a2ab6bd5ba3 add function lost child node, remove deadChild nodeList.
oc
parents: 327
diff changeset
152 System.out.println("task stop");
330
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
153
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
154 String rootHostName = null;
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
155 int rootHostPort = 0;
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
156 String myHostName = null;
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
157 int myHostPort = 0;
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
158
328
1a2ab6bd5ba3 add function lost child node, remove deadChild nodeList.
oc
parents: 327
diff changeset
159 if (isTreeManager) {
330
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
160 try {
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
161 rootHostName = InetAddress.getLocalHost().getHostAddress();
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
162 rootHostPort = getAcceptPort();
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
163 myHostName = rootHostName;
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
164 myHostPort = rootHostPort;
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
165 } catch (UnknownHostException e) {
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
166 e.printStackTrace();
345
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
167 System.out.println("cannot resolve localhost");
330
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
168 }
328
1a2ab6bd5ba3 add function lost child node, remove deadChild nodeList.
oc
parents: 327
diff changeset
169 } else {
330
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
170 rootHostName = getConnectionParam().getHostName();
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
171 rootHostPort = getConnectionParam().getPort();
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
172 myHostName = getMyAddress();
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
173 myHostPort = getAcceptPort();
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
174 }
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
175 TreeVncProtocol echo = new TreeVncProtocol(rootHostName, rootHostPort);
9d1ed0099350 root send lost child, hide function lost parent
oc
parents: 329
diff changeset
176 clients = myId;
334
dff2f92ae3ff change lost left/right child to lost child.
oc
parents: 331
diff changeset
177 echo.lostChild(myHostName, myHostPort, myId);
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
178 break;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
179 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
180 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
181 } catch (InterruptedException e) {
325
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
182 e.printStackTrace();
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
183 System.out.println("timer thread interrupt.");
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
184 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
185 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
186 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
187 };
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
188 new Thread(timer, "timer-discard-multicastqueue").start();
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
189 /**
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
190 * handle command from lower node
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
191 */
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
192 final Runnable reader = new Runnable() {
122
e2416a246c95 noScreenChange flag on command line ( should be on panel also )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
193 public void run() {
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
194 for (;;) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
195 try {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
196 final byte b[] = new byte[4096];
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
197 final int c = is.readByte(b);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
198 if (c <= 0)
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
199 throw new IOException();
290
c10e0dee7bbb add READY_SHARE_SOUND msg, add function of receive READY_SHARE_SOUND msg, add sendSound thread.
oc
parents: 287
diff changeset
200 // case of root node.
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
201 if (isTreeManager()) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
202 if (b[0] == ClientToServerMessage.SERVER_CHANGE_REQUEST) {
335
49e25659ad05 remove socketClose, close unused viewer -d mode.
oc
parents: 334
diff changeset
203 viewer.setVisible(false);
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
204 if (permitChangeScreen()) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
205 ByteBuffer buf = ByteBuffer.wrap(b);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
206 buf.order(ByteOrder.BIG_ENDIAN);
325
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
207 buf.get(); // padding
257
11b59b223222 add function of fixing display size
oc
parents: 256
diff changeset
208 buf.get();
11b59b223222 add function of fixing display size
oc
parents: 256
diff changeset
209 short id = buf.getShort();
11b59b223222 add function of fixing display size
oc
parents: 256
diff changeset
210 int length = buf.getInt();
325
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
211 if (length == 0)
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
212 continue;
257
11b59b223222 add function of fixing display size
oc
parents: 256
diff changeset
213 byte[] byteAddress = new byte[length];
11b59b223222 add function of fixing display size
oc
parents: 256
diff changeset
214 buf.get(byteAddress);
325
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
215 String newHostName = new String(byteAddress, "UTF-8");
257
11b59b223222 add function of fixing display size
oc
parents: 256
diff changeset
216 int frameSizeWidth = buf.getInt();
11b59b223222 add function of fixing display size
oc
parents: 256
diff changeset
217 int frameSizeHeight = buf.getInt();
340
fd529c51095f add port ScreenChangeRequest value.
oc
parents: 339
diff changeset
218 int port = buf.getInt();
fd529c51095f add port ScreenChangeRequest value.
oc
parents: 339
diff changeset
219 System.out.println("Root server change request :" + newHostName + " : " + port);
359
62a6c779fd7f remove function about catch next display size
oc
parents: 358
diff changeset
220 changeVNCServer(viewer, newHostName, port, frameSizeWidth, frameSizeHeight, id);
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
221 } else {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
222 continue;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
223 }
290
c10e0dee7bbb add READY_SHARE_SOUND msg, add function of receive READY_SHARE_SOUND msg, add sendSound thread.
oc
parents: 287
diff changeset
224 } else if (b[0] == ClientToServerMessage.READY_SHARE_SOUND) {
293
d1ceb4b7097a add function receive sound.
oc
parents: 292
diff changeset
225 int rtpPort = selectPort(ConnectionParams.DEFAULT_RTP_PORT);
d1ceb4b7097a add function receive sound.
oc
parents: 292
diff changeset
226 InetAddress hostname = InetAddress.getLocalHost();
d1ceb4b7097a add function receive sound.
oc
parents: 292
diff changeset
227 ReceiveSound receiveSound = new ReceiveSound(socket);
d1ceb4b7097a add function receive sound.
oc
parents: 292
diff changeset
228 Thread receiveSoundThread = new Thread(receiveSound, "receive-sound");
d1ceb4b7097a add function receive sound.
oc
parents: 292
diff changeset
229 receiveSoundThread.start();
230
f4ea9ff04741 reply checkdelay
oc
parents: 229
diff changeset
230 } else if (b[0] == ClientToServerMessage.CHECK_DELAY_REPLY) {
f4ea9ff04741 reply checkdelay
oc
parents: 229
diff changeset
231 ByteBuffer buf = ByteBuffer.wrap(b);
f4ea9ff04741 reply checkdelay
oc
parents: 229
diff changeset
232 buf.order(ByteOrder.BIG_ENDIAN);
234
8479ad028ec7 fix checkdelay send and get.
oc
parents: 233
diff changeset
233 buf.getShort();
8479ad028ec7 fix checkdelay send and get.
oc
parents: 233
diff changeset
234 Long time = buf.getLong();
8479ad028ec7 fix checkdelay send and get.
oc
parents: 233
diff changeset
235 int port = buf.getInt();
8479ad028ec7 fix checkdelay send and get.
oc
parents: 233
diff changeset
236 int addressLength = buf.getInt();
8479ad028ec7 fix checkdelay send and get.
oc
parents: 233
diff changeset
237 byte[] byteAddress = new byte[addressLength];
8479ad028ec7 fix checkdelay send and get.
oc
parents: 233
diff changeset
238 buf.get(byteAddress);
8479ad028ec7 fix checkdelay send and get.
oc
parents: 233
diff changeset
239 String address = new String(byteAddress, "UTF-8");
235
15e66adbb8bb get checkdelay nodeNum.
oc
parents: 234
diff changeset
240 int nodeNum = getNodeNum(port, address);
230
f4ea9ff04741 reply checkdelay
oc
parents: 229
diff changeset
241 Long delay = System.currentTimeMillis() - time;
244
8cc07511b1d5 small fix checkDelay
oc
parents: 243
diff changeset
242 double halfDelay = (double) delay / 2;
252
eee9a8f53dbc change check delay log
oc
parents: 249
diff changeset
243 System.out.println(System.currentTimeMillis() + " : receive checkDelay : nodeNum" + nodeNum + ", port : " + port + ", address : " + address + ", delay : " + halfDelay);
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
244 }
325
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
245 // case of client node.
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
246 } else if (b[0] == ClientToServerMessage.SERVER_CHANGE_REQUEST) {
295
71d24f7b3b3b fix send ClientToServerMessage
oc
parents: 293
diff changeset
247 ClientToServerMessage serverChangeRequest = new ClientToServerMessage() {
113
bce2ef0a2e79 use ProtocolContext.sendMessage for upward command
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 112
diff changeset
248 @Override
bce2ef0a2e79 use ProtocolContext.sendMessage for upward command
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 112
diff changeset
249 public void send(Writer writer)
bce2ef0a2e79 use ProtocolContext.sendMessage for upward command
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 112
diff changeset
250 throws TransportException {
325
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
251 writer.write(b, 0, c);
113
bce2ef0a2e79 use ProtocolContext.sendMessage for upward command
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 112
diff changeset
252 }
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
253 };
295
71d24f7b3b3b fix send ClientToServerMessage
oc
parents: 293
diff changeset
254 context.sendMessage(serverChangeRequest);
301
ae7deb002b5f send and receive single display size
oc
parents: 298
diff changeset
255 } else if (b[0] == ClientToServerMessage.REQUEST_SINGLE_DISPLAY_SIZE) {
295
71d24f7b3b3b fix send ClientToServerMessage
oc
parents: 293
diff changeset
256 ClientToServerMessage requestSingeDisplayWidth = new ClientToServerMessage() {
280
9c5874d0f37e fix adjustHdSizeButton button, this button send REQUEST_SINGLE_DISPLAY_WIDTH
oc
parents: 277
diff changeset
257 @Override
9c5874d0f37e fix adjustHdSizeButton button, this button send REQUEST_SINGLE_DISPLAY_WIDTH
oc
parents: 277
diff changeset
258 public void send(Writer writer)
9c5874d0f37e fix adjustHdSizeButton button, this button send REQUEST_SINGLE_DISPLAY_WIDTH
oc
parents: 277
diff changeset
259 throws TransportException {
9c5874d0f37e fix adjustHdSizeButton button, this button send REQUEST_SINGLE_DISPLAY_WIDTH
oc
parents: 277
diff changeset
260 writer.write(b, 0, c);
9c5874d0f37e fix adjustHdSizeButton button, this button send REQUEST_SINGLE_DISPLAY_WIDTH
oc
parents: 277
diff changeset
261 }
9c5874d0f37e fix adjustHdSizeButton button, this button send REQUEST_SINGLE_DISPLAY_WIDTH
oc
parents: 277
diff changeset
262 };
295
71d24f7b3b3b fix send ClientToServerMessage
oc
parents: 293
diff changeset
263 context.sendMessage(requestSingeDisplayWidth);
290
c10e0dee7bbb add READY_SHARE_SOUND msg, add function of receive READY_SHARE_SOUND msg, add sendSound thread.
oc
parents: 287
diff changeset
264 } else if (b[0] == ClientToServerMessage.READY_SHARE_SOUND) {
c10e0dee7bbb add READY_SHARE_SOUND msg, add function of receive READY_SHARE_SOUND msg, add sendSound thread.
oc
parents: 287
diff changeset
265 ClientToServerMessage readyShareSound = new ClientToServerMessage() {
c10e0dee7bbb add READY_SHARE_SOUND msg, add function of receive READY_SHARE_SOUND msg, add sendSound thread.
oc
parents: 287
diff changeset
266 @Override
c10e0dee7bbb add READY_SHARE_SOUND msg, add function of receive READY_SHARE_SOUND msg, add sendSound thread.
oc
parents: 287
diff changeset
267 public void send(Writer writer)
c10e0dee7bbb add READY_SHARE_SOUND msg, add function of receive READY_SHARE_SOUND msg, add sendSound thread.
oc
parents: 287
diff changeset
268 throws TransportException {
325
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
269 writer.write(b, 0, c);
290
c10e0dee7bbb add READY_SHARE_SOUND msg, add function of receive READY_SHARE_SOUND msg, add sendSound thread.
oc
parents: 287
diff changeset
270 }
c10e0dee7bbb add READY_SHARE_SOUND msg, add function of receive READY_SHARE_SOUND msg, add sendSound thread.
oc
parents: 287
diff changeset
271 };
c10e0dee7bbb add READY_SHARE_SOUND msg, add function of receive READY_SHARE_SOUND msg, add sendSound thread.
oc
parents: 287
diff changeset
272 context.sendMessage(readyShareSound);
230
f4ea9ff04741 reply checkdelay
oc
parents: 229
diff changeset
273 } else if (b[0] == ClientToServerMessage.CHECK_DELAY_REPLY) {
f4ea9ff04741 reply checkdelay
oc
parents: 229
diff changeset
274 ClientToServerMessage checkDelayReply = new ClientToServerMessage() {
f4ea9ff04741 reply checkdelay
oc
parents: 229
diff changeset
275 @Override
f4ea9ff04741 reply checkdelay
oc
parents: 229
diff changeset
276 public void send(Writer writer)
f4ea9ff04741 reply checkdelay
oc
parents: 229
diff changeset
277 throws TransportException {
325
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
278 writer.write(b, 0, c);
230
f4ea9ff04741 reply checkdelay
oc
parents: 229
diff changeset
279 }
f4ea9ff04741 reply checkdelay
oc
parents: 229
diff changeset
280 };
f4ea9ff04741 reply checkdelay
oc
parents: 229
diff changeset
281 context.sendMessage(checkDelayReply);
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
282 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
283 } catch (Exception e) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
284 try {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
285 writerRunning.set(2);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
286 os.close();
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
287 is.close();
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
288 break;
367
0e3af3c8b771 Add Exception messeges
innparusu
parents: 359
diff changeset
289 } catch (Exception e1) {
0e3af3c8b771 Add Exception messeges
innparusu
parents: 359
diff changeset
290 System.out.println("cannot close ClientToServerMessage "+e1);
0e3af3c8b771 Add Exception messeges
innparusu
parents: 359
diff changeset
291
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
292 }
367
0e3af3c8b771 Add Exception messeges
innparusu
parents: 359
diff changeset
293 System.out.println("cannot read ClientToServerMessage "+e);
0e3af3c8b771 Add Exception messeges
innparusu
parents: 359
diff changeset
294
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
295 return;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
296 }
325
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
297
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
298 /*
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
299 // あとで検討
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
300 } catch (TransportException e) {
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
301
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
302 }
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
303 */
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
304 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
305 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
306 };
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
307 /**
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
308 * send packets to a client (one thread for each client )
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
309 */
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
310 Runnable sender = new Runnable() {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
311 public void run() {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
312 writerRunning.set(1);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
313 try {
345
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
314 requestThreadNotify(); // send full screen request via fullScreenRequestThread
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 237
diff changeset
315
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
316 // after this, we discard upward packet.
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 237
diff changeset
317 new Thread(reader, "upward-packet-processing").start();
345
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
318
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
319 for (;;) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
320 LinkedList<ByteBuffer> bufs = c.poll();
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
321 int inputIndex = 0;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
322 ByteBuffer header = bufs.get(inputIndex);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
323 if (header == null)
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
324 continue;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
325 writeToClient(os, bufs, inputIndex);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
326 writerRunning.set(1); // yes my client is awaking.
345
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
327 if (!childrenMulticast) {
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
328 for (;;) {
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
329 LinkedList<ByteBuffer> flag = c.poll();
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
330 if (flag.size() == 0) {
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
331 break;
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
332 }
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
333 }
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
334 }
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
335 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
336 } catch (Exception e) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
337 try {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
338 writerRunning.set(2);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
339 os.close();
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
340 } catch (IOException e1) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
341 System.out.println("root writer close faild :" + e1);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
342 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
343 System.out.println("root writer faild :" + e);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
344 /* if socket closed cliList.remove(newCli); */
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
345 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
346 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
347 public void writeToClient(final Writer os,
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
348 LinkedList<ByteBuffer> bufs, int inputIndex)
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
349 throws TransportException {
354
7ef4ac588459 remove flag in writeToClinet
oc
parents: 353
diff changeset
350 while (inputIndex < bufs.size()) {
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
351 ByteBuffer b = bufs.get(inputIndex++);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
352 os.write(b.array(), b.position(), b.limit());
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
353 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
354 os.flush();
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
355 multicastqueue.heapAvailable();
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
356 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
357 };
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
358 clients++;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
359 new Thread(sender, "writer-to-lower-node").start();
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
360 }
157
7cea8789387b thread base command listening loop
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
361
122
e2416a246c95 noScreenChange flag on command line ( should be on panel also )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
362 public boolean permitChangeScreen() {
e2416a246c95 noScreenChange flag on command line ( should be on panel also )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
363 return permitChangeScreen;
e2416a246c95 noScreenChange flag on command line ( should be on panel also )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
364 }
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
365
122
e2416a246c95 noScreenChange flag on command line ( should be on panel also )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
366
e2416a246c95 noScreenChange flag on command line ( should be on panel also )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
367 public void setPermitChangeScreen(boolean v) {
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
368 permitChangeScreen = v;
122
e2416a246c95 noScreenChange flag on command line ( should be on panel also )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
369 }
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
370
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
371 public void requestThreadNotify() {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
372 rThread.reStart();
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
373 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
374
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
375
28
18fad65bc447 Create MyRfbProto.java
one
parents:
diff changeset
376 public void setProtocolContext(Protocol workingProtocol) {
18fad65bc447 Create MyRfbProto.java
one
parents:
diff changeset
377 context = workingProtocol;
18fad65bc447 Create MyRfbProto.java
one
parents:
diff changeset
378 }
29
57eb5575e6c4 MyRfbProto for client and proxy.
one
parents: 28
diff changeset
379
134
128cce60c43c where to connect command
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
380 public Socket accept() throws IOException {
128cce60c43c where to connect command
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
381 return servSock.accept();
128cce60c43c where to connect command
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
382 }
31
872d9bcbfe56 Before changing the Viewer.
one
parents: 29
diff changeset
383
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
384 public int selectPort(int p) {
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
385 int port = p;
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
386 while (true) {
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
387 try {
134
128cce60c43c where to connect command
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
388 servSock = new ServerSocket(port);
128cce60c43c where to connect command
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
389 acceptPort = port;
181
9c02b5a72bf9 fix root myAddress.
oc
parents: 179
diff changeset
390 myAddress = "127.0.0.1";
207
b31903e5b02d rename myRFBProto
oc
parents: 206
diff changeset
391 nets.getNetworkInterfaces();
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
392 break;
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
393 } catch (BindException e) {
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
394 port++;
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
395 continue;
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
396 } catch (IOException e) {
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
397
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
398 }
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
399 }
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
400 System.out.println("accept port = " + port);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
401 return port;
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
402 }
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
403
33
9d3478d11d3b Add the processing of client
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
404
9d3478d11d3b Add the processing of client
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
405
331
42fcc9419498 add error message, add lostParent case by fail to connectTo.
oc
parents: 330
diff changeset
406 public void writeFramebufferUpdateRequest(int x, int y, int w, int h, boolean incremental) {
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
407 byte[] b = new byte[10];
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
408
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
409 b[0] = (byte) FramebufferUpdateRequest; // 3 is FrameBufferUpdateRequest
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
410 b[1] = (byte) (incremental ? 1 : 0);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
411 b[2] = (byte) ((x >> 8) & 0xff);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
412 b[3] = (byte) (x & 0xff);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
413 b[4] = (byte) ((y >> 8) & 0xff);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
414 b[5] = (byte) (y & 0xff);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
415 b[6] = (byte) ((w >> 8) & 0xff);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
416 b[7] = (byte) (w & 0xff);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
417 b[8] = (byte) ((h >> 8) & 0xff);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
418 b[9] = (byte) (h & 0xff);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
419 }
33
9d3478d11d3b Add the processing of client
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
420
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
421 public void setViewer(ViewerInterface v) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
422 viewer = v;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
423 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
424
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
425 public ViewerInterface getViewer() {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
426 return viewer;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
427 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
428
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
429
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
430 void sendInitData(OutputStream os) throws IOException {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
431 os.write(context.getInitData());
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
432 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
433
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
434
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
435 public void setTerminationType(boolean setType) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
436 normalTermination = setType;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
437 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
438
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
439 public boolean getTerminationType() {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
440 return normalTermination;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
441 }
43
6687aa9dd55e add flag for screen change in ReciverTask.java.
one
parents: 38
diff changeset
442
206
2b3eb4a9492f MyRfbProto reorganization
oc
parents: 205
diff changeset
443
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
444 public void addHostToSelectionPanel(int port, String hostname,String myHostName) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
445 if (rootSelectionPanel != null) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
446 rootSelectionPanel.checkBox(Integer.toString(port) + ":" + hostname + ":" + myHostName);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
447 rootSelectionPanel.setButton();
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
448 rootSelectionPanel.visible();
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
449 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
450 }
43
6687aa9dd55e add flag for screen change in ReciverTask.java.
one
parents: 38
diff changeset
451
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
452 public void createRootSelectionPanel(CreateConnectionParam cp) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
453 rootSelectionPanel = new TreeVncRootSelectionPanel();
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
454 rootSelectionPanel.setCp(cp);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
455 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
456
134
128cce60c43c where to connect command
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
457 public void close() {
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
458 // none
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
459 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
460
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
461 public int getAcceptPort() {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
462 return acceptPort;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
463 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
464
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
465 public boolean getReadyReconnect() {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
466 return readyReconnect;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
467 }
65
ffd7537cebfc cuiversion
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 64
diff changeset
468
ffd7537cebfc cuiversion
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 64
diff changeset
469
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
470 public boolean getCuiVersion() {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
471 return cuiVersion;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
472 }
66
84ad879891e9 dont move
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 65
diff changeset
473
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
474 public void setCuiVersion(boolean flag) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
475 cuiVersion = flag;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
476 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
477
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
478 public void readCheckDelay(Reader reader) throws TransportException {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
479
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
480 }
134
128cce60c43c where to connect command
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
481
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
482 public synchronized void vncConnected(boolean ready) {
345
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
483 enableChildrenTransmission();
369
2d01ec1c02d2 Fix ReConnectingFlag
innparusu
parents: 367
diff changeset
484 readyReconnect = ready;
2d01ec1c02d2 Fix ReConnectingFlag
innparusu
parents: 367
diff changeset
485 if (ready) {
2d01ec1c02d2 Fix ReConnectingFlag
innparusu
parents: 367
diff changeset
486 notifyAll();
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
487 }
345
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
488 }
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
489
369
2d01ec1c02d2 Fix ReConnectingFlag
innparusu
parents: 367
diff changeset
490 public void printNetworkInterface() {
345
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
491 Socket vncSocket = viewer.getVNCSocket();
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
492 NetworkInterface ni = nets.getInterface(vncSocket);
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
493 if (ni!=null) {
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
494 vncInterface = ni.getName();
369
2d01ec1c02d2 Fix ReConnectingFlag
innparusu
parents: 367
diff changeset
495 System.out.print("VNCNetworkInterface :" + vncInterface);
370
2c61e6d434ff Fix VncConnectionWorkers
innparusu
parents: 369
diff changeset
496 if(false) {
2c61e6d434ff Fix VncConnectionWorkers
innparusu
parents: 369
diff changeset
497 Enumeration<InetAddress> addresses = ni.getInetAddresses();
2c61e6d434ff Fix VncConnectionWorkers
innparusu
parents: 369
diff changeset
498 while (addresses.hasMoreElements()) {
2c61e6d434ff Fix VncConnectionWorkers
innparusu
parents: 369
diff changeset
499 InetAddress adr = addresses.nextElement();
2c61e6d434ff Fix VncConnectionWorkers
innparusu
parents: 369
diff changeset
500 System.out.print(" " + adr);
2c61e6d434ff Fix VncConnectionWorkers
innparusu
parents: 369
diff changeset
501 }
369
2d01ec1c02d2 Fix ReConnectingFlag
innparusu
parents: 367
diff changeset
502 }
2d01ec1c02d2 Fix ReConnectingFlag
innparusu
parents: 367
diff changeset
503 System.out.println();
345
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
504 }
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
505 }
94
75879c316796 synchronized wait for Rfb initialization in change server.
oc
parents: 89
diff changeset
506
202
22676ca0dd97 get VNC Socket.
oc
parents: 201
diff changeset
507
325
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
508 public synchronized void waitForVNCConnection() {
369
2d01ec1c02d2 Fix ReConnectingFlag
innparusu
parents: 367
diff changeset
509 while (!readyReconnect) {
325
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
510 try {
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
511 wait();
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
512 } catch (InterruptedException e) {
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
513 e.printStackTrace();
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
514 System.out.println("interrupt wait for vnc connection.");
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
515 }
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
516 }
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
517 }
96
76e49dd9c9c5 Client resize without reconnection
oc
parents: 94
diff changeset
518
76e49dd9c9c5 Client resize without reconnection
oc
parents: 94
diff changeset
519
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
520 public void sendDesktopSizeChange(short id) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
521 LinkedList<ByteBuffer> desktopSize = new LinkedList<ByteBuffer>();
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
522 int width = context.getFbWidth();
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
523 int height = context.getFbHeight();
304
d2a56d7d4b2d send initData secound
oc
parents: 302
diff changeset
524 byte[] initData = null;
d2a56d7d4b2d send initData secound
oc
parents: 302
diff changeset
525
d2a56d7d4b2d send initData secound
oc
parents: 302
diff changeset
526 if (filterSingleDisplay) {
353
eba44a31e868 remove filterSingleDisplay option in retina version
oc
parents: 352
diff changeset
527 originalInitData = createOriginalInitData(singleWidth, singleHeight, context.getRemoteDesktopName());
350
7050b41329c6 remove original InitData
oc
parents: 349
diff changeset
528 // desktopSize.add(new ChengeDesktopSize(singleWidth, singleHeight, EncodingType.INIT_DATA, originalInitData, id).getMessage());
7050b41329c6 remove original InitData
oc
parents: 349
diff changeset
529 desktopSize.add(new ChengeDesktopSize(width, height, EncodingType.INIT_DATA, context.getInitData(), id).getMessage());
305
0ee520f535c9 fix initData
oc
parents: 304
diff changeset
530 } else {
0ee520f535c9 fix initData
oc
parents: 304
diff changeset
531 desktopSize.add(new ChengeDesktopSize(width, height, EncodingType.INIT_DATA, context.getInitData(), id).getMessage());
304
d2a56d7d4b2d send initData secound
oc
parents: 302
diff changeset
532 }
242
a640cd7001e1 fix checkdelay, and fix serial number option
oc
parents: 241
diff changeset
533 addSerialNumber(desktopSize);
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
534 multicastqueue.put(desktopSize);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
535 }
98
8f4c45c1b396 add serial number to desktop size encoding packet.
oc
parents: 97
diff changeset
536
306
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
537 public byte[] createOriginalInitData(int singleWidth, int singleHeight, String remoteDesktopName) {
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
538 TreeVncCommandChannelListener treeVncCommandChannelListener = new TreeVncCommandChannelListener(this, acceptPort);
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
539 byte[] originalInitData = treeVncCommandChannelListener.createOriginalInitData(singleWidth, singleHeight, remoteDesktopName);
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
540 return originalInitData;
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
541 }
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
542
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
543 public void addSerialNumber(LinkedList<ByteBuffer> bufs) {
242
a640cd7001e1 fix checkdelay, and fix serial number option
oc
parents: 241
diff changeset
544 ByteBuffer serialNum = multicastqueue.allocate(4+8); // addSerialNum flag + SerialNum
243
0ed7719c1800 fix serial number option.
oc
parents: 242
diff changeset
545 if (this.addSerialNum) {
0ed7719c1800 fix serial number option.
oc
parents: 242
diff changeset
546 serialNum.putInt(1);
0ed7719c1800 fix serial number option.
oc
parents: 242
diff changeset
547 } else {
0ed7719c1800 fix serial number option.
oc
parents: 242
diff changeset
548 serialNum.putInt(0);
0ed7719c1800 fix serial number option.
oc
parents: 242
diff changeset
549 }
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
550 serialNum.putLong(counter++);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
551 serialNum.flip();
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
552 bufs.addFirst(serialNum);
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
553 }
102
1f7ee648e1f6 inflator in MyRfbProtoProxy should be renew to accept new VNC server socket.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 99
diff changeset
554
1f7ee648e1f6 inflator in MyRfbProtoProxy should be renew to accept new VNC server socket.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 99
diff changeset
555
1f7ee648e1f6 inflator in MyRfbProtoProxy should be renew to accept new VNC server socket.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 99
diff changeset
556 public void resetDecoder() {
1f7ee648e1f6 inflator in MyRfbProtoProxy should be renew to accept new VNC server socket.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 99
diff changeset
557 context.resetDecoder();
1f7ee648e1f6 inflator in MyRfbProtoProxy should be renew to accept new VNC server socket.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 99
diff changeset
558 }
1f7ee648e1f6 inflator in MyRfbProtoProxy should be renew to accept new VNC server socket.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 99
diff changeset
559
1f7ee648e1f6 inflator in MyRfbProtoProxy should be renew to accept new VNC server socket.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 99
diff changeset
560 public void stopReceiverTask() {
345
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
561 if (context!=null) {
102
1f7ee648e1f6 inflator in MyRfbProtoProxy should be renew to accept new VNC server socket.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 99
diff changeset
562 context.cleanUpSession(null);
345
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
563 context.getRfb().clearChildrenTransmission();
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
564 }
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
565 // cleanup zlib decoder for new VNCServer
202
22676ca0dd97 get VNC Socket.
oc
parents: 201
diff changeset
566 if (isTreeManager())
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
567 inflater = new Inflater();
102
1f7ee648e1f6 inflator in MyRfbProtoProxy should be renew to accept new VNC server socket.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 99
diff changeset
568 }
113
bce2ef0a2e79 use ProtocolContext.sendMessage for upward command
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 112
diff changeset
569
345
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
570 public void clearChildrenTransmission() {
355
82825c322044 comment out clear children transmission
oc
parents: 354
diff changeset
571 // discarding does not work now.
82825c322044 comment out clear children transmission
oc
parents: 354
diff changeset
572
82825c322044 comment out clear children transmission
oc
parents: 354
diff changeset
573 /*
345
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
574 // set discard flag
354
7ef4ac588459 remove flag in writeToClinet
oc
parents: 353
diff changeset
575 childrenMulticast = false;
345
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
576 // put gurd erement to restart multicastqueue.
354
7ef4ac588459 remove flag in writeToClinet
oc
parents: 353
diff changeset
577 multicastqueue.put(new LinkedList<ByteBuffer>());
355
82825c322044 comment out clear children transmission
oc
parents: 354
diff changeset
578 */
345
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
579 }
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
580
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
581 public void enableChildrenTransmission() {
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
582 // a child senderTask may skip this flag
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
583 // durling write waiting. in this case, remaining bufferes are sent.
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
584 childrenMulticast = true;
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
585 }
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
586
113
bce2ef0a2e79 use ProtocolContext.sendMessage for upward command
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 112
diff changeset
587 public String getMyAddress() {
174
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
588 return myAddress;
113
bce2ef0a2e79 use ProtocolContext.sendMessage for upward command
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 112
diff changeset
589 }
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
590
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
591 /**
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
592 * gzip byte arrays
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
593 *
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
594 * @param deflater
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
595 * @param inputs
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
596 * byte data[]
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
597 * @param inputIndex
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
598 * @param outputs
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
599 * byte data[]
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
600 * @return byte length in last byte array
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
601 * @throws IOException
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
602 */
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
603 public int zip(Deflater deflater, LinkedList<ByteBuffer> inputs,
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
604 int inputIndex, LinkedList<ByteBuffer> outputs) throws IOException {
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
605 int len = 0;
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
606 ByteBuffer c1 = multicastqueue.allocate(INFLATE_BUFSIZE);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
607 while (inputIndex < inputs.size()) {
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
608 ByteBuffer b1 = inputs.get(inputIndex++);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
609 deflater.setInput(b1.array(), b1.position(), b1.remaining());
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
610 /**
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
611 * If we finish() stream and reset() it, Deflater start new gzip
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
612 * stream, this makes continuous zlib reader unhappy. if we remove
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
613 * finish(), Deflater.deflate() never flushes its output. The
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
614 * original zlib deflate has flush flag. I'm pretty sure this a kind
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
615 * of bug of Java library.
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
616 */
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
617 if (inputIndex == inputs.size())
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
618 deflater.finish();
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
619 int len1 = 0;
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
620 do {
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
621 len1 = deflater.deflate(c1.array(), c1.position(),
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
622 c1.remaining());
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
623 if (len1 > 0) {
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
624 len += len1;
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
625 c1.position(c1.position() + len1);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
626 if (c1.remaining() == 0) {
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
627 c1.flip();
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
628 outputs.addLast(c1);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
629 c1 = multicastqueue.allocate(INFLATE_BUFSIZE);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
630 }
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
631 }
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
632 } while (len1 > 0 || !deflater.needsInput()); // &&!deflater.finished());
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
633 }
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
634 if (c1.position() != 0) {
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
635 c1.flip();
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
636 outputs.addLast(c1);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
637 }
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
638 deflater.reset();
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
639 return len;
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
640 }
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
641
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
642 /**
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
643 * gunzip byte arrays
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
644 *
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
645 * @param inflater
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
646 * @param inputs
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
647 * byte data[]
182
b3426724667b fix read send data.
oc
parents: 181
diff changeset
648 * @param bytes
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
649 * byte data[]
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
650 * @return number of total bytes
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
651 * @throws IOException
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
652 */
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
653 public int unzip(Inflater inflater, LinkedList<ByteBuffer> inputs,
335
49e25659ad05 remove socketClose, close unused viewer -d mode.
oc
parents: 334
diff changeset
654 int inputIndex, byte[] bytes, int bufSize) throws DataFormatException {
182
b3426724667b fix read send data.
oc
parents: 181
diff changeset
655 int position = 0;
b3426724667b fix read send data.
oc
parents: 181
diff changeset
656 int limit = bytes.length;
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
657 while (inputIndex < inputs.size()) {
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
658 ByteBuffer input = inputs.get(inputIndex++);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
659 inflater.setInput(input.array(), input.position(), input.limit());
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
660 // if (inputIndex==inputs.size()) if inflater/deflater has symmetry,
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
661 // we need this
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
662 // inflater.end(); but this won't work
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
663 do {
318
d01d56038dd1 try catch unzip inflate error.
oc
parents: 317
diff changeset
664 int len0;
d01d56038dd1 try catch unzip inflate error.
oc
parents: 317
diff changeset
665 len0 = inflater.inflate(bytes, position, limit-position);
d01d56038dd1 try catch unzip inflate error.
oc
parents: 317
diff changeset
666 if (len0 > 0) {
d01d56038dd1 try catch unzip inflate error.
oc
parents: 317
diff changeset
667 position += len0;
d01d56038dd1 try catch unzip inflate error.
oc
parents: 317
diff changeset
668 if (position > limit) throw new DataFormatException();
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
669 }
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
670 } while (!inflater.needsInput());
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
671 }
182
b3426724667b fix read send data.
oc
parents: 181
diff changeset
672 return position;
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
673 }
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
674
135
ada4d850a820 lostParent and notFoundParenet
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 134
diff changeset
675 /**
345
47e351909227 add stop children sender when change server.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 342
diff changeset
676 * Multicast framebufferUpdate to children.
135
ada4d850a820 lostParent and notFoundParenet
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 134
diff changeset
677 * read FrameBuffferUpdate. If it is ZLE, make it ZLEE which is self contained compressed packet.
ada4d850a820 lostParent and notFoundParenet
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 134
diff changeset
678 * put the packet to the multicastqueue. Then normal rendering engine read the same stream using is.reset().
ada4d850a820 lostParent and notFoundParenet
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 134
diff changeset
679 * @param dataLen
ada4d850a820 lostParent and notFoundParenet
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 134
diff changeset
680 * @param reader
ada4d850a820 lostParent and notFoundParenet
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 134
diff changeset
681 * @throws TransportException
232
6ee4cdca104c send value of port and localhost in checkdelay framebufferupdate, and get this.
oc
parents: 231
diff changeset
682 * @throws UnsupportedEncodingException
135
ada4d850a820 lostParent and notFoundParenet
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 134
diff changeset
683 */
264
83d0256a8808 add fixing display filter.
oc
parents: 257
diff changeset
684 public void readSendData(int dataLen, Reader reader, byte[] bytes, FramebufferUpdateRectangle rect)
232
6ee4cdca104c send value of port and localhost in checkdelay framebufferupdate, and get this.
oc
parents: 231
diff changeset
685 throws TransportException, UnsupportedEncodingException {
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
686 LinkedList<ByteBuffer> bufs = new LinkedList<ByteBuffer>();
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
687 ByteBuffer header = multicastqueue.allocate(16);
242
a640cd7001e1 fix checkdelay, and fix serial number option
oc
parents: 241
diff changeset
688 ByteBuffer serial = multicastqueue.allocate(4+8);
378
60abae693629 Compare SerialNumber flag
innparusu
parents: 373
diff changeset
689 if (!isTreeManager() && addSerialNum) {
242
a640cd7001e1 fix checkdelay, and fix serial number option
oc
parents: 241
diff changeset
690 reader.readBytes(serial.array(),0,4+8);
a640cd7001e1 fix checkdelay, and fix serial number option
oc
parents: 241
diff changeset
691 serial.limit(4+8);
182
b3426724667b fix read send data.
oc
parents: 181
diff changeset
692 }
185
feefc1e58153 minor fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 182
diff changeset
693 reader.mark(dataLen);
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
694 reader.readBytes(header.array(), 0, 16);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
695 header.limit(16);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
696 if (header.get(0) == FramebufferUpdate) {
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
697 int encoding = header.getInt(12);
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 237
diff changeset
698
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
699 if (encoding == EncodingType.ZRLE.getId()
229
5eb8aa65f387 fix checkdelay number-of-rectangle, and send checkdelay to lower node.
oc
parents: 227
diff changeset
700 || encoding == EncodingType.ZLIB.getId()) {
186
f76ee760c2d2 dead lock on command line root
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 185
diff changeset
701 // recompress into ZREE
f76ee760c2d2 dead lock on command line root
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 185
diff changeset
702 // uncompressed result is remain in bytes
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
703 ByteBuffer len = multicastqueue.allocate(4);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
704 reader.readBytes(len.array(), 0, 4);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
705 len.limit(4);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
706 ByteBuffer inputData = multicastqueue.allocate(dataLen - 20);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
707 reader.readBytes(inputData.array(), 0, inputData.capacity());
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
708 inputData.limit(dataLen - 20);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
709 LinkedList<ByteBuffer> inputs = new LinkedList<ByteBuffer>();
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
710 inputs.add(inputData);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
711 header.putInt(12, EncodingType.ZRLEE.getId()); // means
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
712 // recompress
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
713 // every time
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
714 // using new Deflecter every time is incompatible with the
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
715 // protocol, clients have to be modified.
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
716 Deflater nDeflater = deflater; // new Deflater();
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
717 LinkedList<ByteBuffer> out = new LinkedList<ByteBuffer>();
373
b6665f7f18d1 Fix Change Server
innparusu
parents: 371
diff changeset
718 try {
182
b3426724667b fix read send data.
oc
parents: 181
diff changeset
719 unzip(inflater, inputs, 0, bytes, INFLATE_BUFSIZE);
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
720 // dump32(inputs);
182
b3426724667b fix read send data.
oc
parents: 181
diff changeset
721 out.add(ByteBuffer.wrap(bytes));
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
722 int len2 = zip(nDeflater, out, 0, bufs);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
723 ByteBuffer blen = multicastqueue.allocate(4);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
724 blen.putInt(len2);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
725 blen.flip();
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
726 bufs.addFirst(blen);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
727 bufs.addFirst(header);
242
a640cd7001e1 fix checkdelay, and fix serial number option
oc
parents: 241
diff changeset
728 addSerialNumber(bufs);
270
2d934eee4f4b small fix
oc
parents: 269
diff changeset
729 if (filterSingleDisplay) {
275
0f9b3de45fb2 set main display size.
oc
parents: 270
diff changeset
730 if (rect.x < singleWidth) {
270
2d934eee4f4b small fix
oc
parents: 269
diff changeset
731 multicastqueue.put(bufs);
2d934eee4f4b small fix
oc
parents: 269
diff changeset
732 }
2d934eee4f4b small fix
oc
parents: 269
diff changeset
733 } else {
2d934eee4f4b small fix
oc
parents: 269
diff changeset
734 multicastqueue.put(bufs);
2d934eee4f4b small fix
oc
parents: 269
diff changeset
735 }
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
736 } catch (IOException e) {
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
737 throw new TransportException(e);
335
49e25659ad05 remove socketClose, close unused viewer -d mode.
oc
parents: 334
diff changeset
738 } catch (DataFormatException e) {
49e25659ad05 remove socketClose, close unused viewer -d mode.
oc
parents: 334
diff changeset
739 throw new TransportException(e);
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
740 }
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
741 return;
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
742 }
233
26b7c0a6d91b fix indent.
oc
parents: 232
diff changeset
743
186
f76ee760c2d2 dead lock on command line root
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 185
diff changeset
744 // ZRLEE is already compressed
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
745 bufs.add(header);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
746 if (dataLen > 16) {
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
747 ByteBuffer b = multicastqueue.allocate(dataLen - 16);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
748 reader.readBytes(b.array(), 0, dataLen - 16);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
749 b.limit(dataLen - 16);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
750 bufs.add(b);
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
751 }
242
a640cd7001e1 fix checkdelay, and fix serial number option
oc
parents: 241
diff changeset
752 this.addSerialNumber(bufs);
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
753 multicastqueue.put(bufs);
233
26b7c0a6d91b fix indent.
oc
parents: 232
diff changeset
754
118
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
755 return;
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
756 }
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
757 // It may be compressed. We can inflate here to avoid repeating clients
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
758 // decompressing here,
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
759 // but it may generate too many large data. It is better to do it in
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
760 // each client.
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
761 // But we have do inflation for all input data, so we have to do it
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
762 // here.
38e461e9b9c9 remove duplicated code in MyRfbProto*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 113
diff changeset
763 }
124
214d4f206431 add TreeVNC command number.
oc
parents: 123
diff changeset
764
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
765 public void setId(short id) {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
766 this.id = id;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
767 }
169
8ab1f6905db4 Try to hide root frame
oc
parents: 166
diff changeset
768
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
769 public short getId() {
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
770 return id;
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
771 }
169
8ab1f6905db4 Try to hide root frame
oc
parents: 166
diff changeset
772
174
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
773 public void setMyAddress(String myHostName) {
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
774 this.myAddress = myHostName;
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
775
174
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
776 }
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
777
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
778 public void setLeader(boolean leader) {
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
779 this.leader = leader;
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
780 }
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
781
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
782 public boolean isLeader() {
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
783 return leader;
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
784 }
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
785
203
2f6237fea67e change createTreeManagers timing.
oc
parents: 202
diff changeset
786 public void setTreeManager(String intf, TreeManagement clients) {
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
787 nets.setTreeManager(intf, clients);
174
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
788 }
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
789
203
2f6237fea67e change createTreeManagers timing.
oc
parents: 202
diff changeset
790 public TreeManagement getTreeManager(String intf) {
231
0e0e6744432c get new nodeList for checkDelay.
oc
parents: 230
diff changeset
791 TreeManagement tm = nets.getTreeManager(intf);
0e0e6744432c get new nodeList for checkDelay.
oc
parents: 230
diff changeset
792 this.nodeList = tm.getList();
0e0e6744432c get new nodeList for checkDelay.
oc
parents: 230
diff changeset
793 return tm;
174
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
794 }
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
795
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
796 /**
290
c10e0dee7bbb add READY_SHARE_SOUND msg, add function of receive READY_SHARE_SOUND msg, add sendSound thread.
oc
parents: 287
diff changeset
797 * change VNCServer is called when host change.
359
62a6c779fd7f remove function about catch next display size
oc
parents: 358
diff changeset
798 *
275
0f9b3de45fb2 set main display size.
oc
parents: 270
diff changeset
799 * @param vncProxyService
174
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
800 * @param hostName
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
801 * HostAddress
359
62a6c779fd7f remove function about catch next display size
oc
parents: 358
diff changeset
802 * @param width
62a6c779fd7f remove function about catch next display size
oc
parents: 358
diff changeset
803 * FrameWidth
62a6c779fd7f remove function about catch next display size
oc
parents: 358
diff changeset
804 * @param height
62a6c779fd7f remove function about catch next display size
oc
parents: 358
diff changeset
805 * FrameHeight
351
024ac6e457f4 fix changeVNCServer
oc
parents: 350
diff changeset
806 * @param newVNCServerId
174
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
807 */
359
62a6c779fd7f remove function about catch next display size
oc
parents: 358
diff changeset
808 public void changeVNCServer(ViewerInterface vncProxyService, String hostName, int port, int width, int height, short newVNCServerId)
325
cc9d33208f34 small change catch error message.
oc
parents: 322
diff changeset
809 throws IOException {
257
11b59b223222 add function of fixing display size
oc
parents: 256
diff changeset
810
359
62a6c779fd7f remove function about catch next display size
oc
parents: 358
diff changeset
811 this.frameSizeWidth = width;
62a6c779fd7f remove function about catch next display size
oc
parents: 358
diff changeset
812 this.frameSizeHeight = height;
62a6c779fd7f remove function about catch next display size
oc
parents: 358
diff changeset
813 singleWidth = frameSizeWidth;
62a6c779fd7f remove function about catch next display size
oc
parents: 358
diff changeset
814 singleHeight = frameSizeHeight;
62a6c779fd7f remove function about catch next display size
oc
parents: 358
diff changeset
815
351
024ac6e457f4 fix changeVNCServer
oc
parents: 350
diff changeset
816 if (newVNCServerId == -1) {
339
4713559f5838 if have a parent, send serverChangeRequest and whereToConnect
oc
parents: 335
diff changeset
817 // change to the tree vnc root on other network.
4713559f5838 if have a parent, send serverChangeRequest and whereToConnect
oc
parents: 335
diff changeset
818 // send whereToConnect.
4713559f5838 if have a parent, send serverChangeRequest and whereToConnect
oc
parents: 335
diff changeset
819 cp = new CreateConnectionParam(this);
340
fd529c51095f add port ScreenChangeRequest value.
oc
parents: 339
diff changeset
820 cp.setHostName(hostName, port, myAddress);
339
4713559f5838 if have a parent, send serverChangeRequest and whereToConnect
oc
parents: 335
diff changeset
821 cp.sendWhereToConnect(viewer);
4713559f5838 if have a parent, send serverChangeRequest and whereToConnect
oc
parents: 335
diff changeset
822 stopReceiverTask();
4713559f5838 if have a parent, send serverChangeRequest and whereToConnect
oc
parents: 335
diff changeset
823 return;
4713559f5838 if have a parent, send serverChangeRequest and whereToConnect
oc
parents: 335
diff changeset
824 }
342
4c670edf3065 fix setting remote id
oc
parents: 341
diff changeset
825 // serverChangeの処理
369
2d01ec1c02d2 Fix ReConnectingFlag
innparusu
parents: 367
diff changeset
826 vncProxyService.inhelitClients(vncProxyService, hostName, newVNCServerId);
317
3c63bc88383e always fit screen, -d mode.
oc
parents: 306
diff changeset
827 // after connecting VNC server, rfb send SEND_INIT_DATA command and wakes me up if necessary
322
345185ef630e close viewer as soon as push share screen button.
oc
parents: 320
diff changeset
828 // stop reader stop
174
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
829 }
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
830
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
831 /**
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
832 * start accepting children
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
833 * run rootFinderListener if necessary
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
834 */
176
fa6cfb85444e on going ...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
835 public void createConnectionAndStart(ViewerInterface v) {
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
836 selectPort(ConnectionParams.DEFAULT_VNC_ROOT);
176
fa6cfb85444e on going ...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
837 startTreeVncCommandListener();
174
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
838 }
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
839
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
840 public void startTreeVncCommandListener() {
176
fa6cfb85444e on going ...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
841 acceptThread = new TreeVncCommandChannelListener(this, getAcceptPort());
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
842 Thread thread = new Thread(acceptThread, "TreeVNC-accept");
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
843 thread.start();
176
fa6cfb85444e on going ...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
844 }
fa6cfb85444e on going ...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
845
174
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
846 public TreeVncCommandChannelListener getAcceptThread() {
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
847 return acceptThread;
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
848 }
2e1530139169 reorganization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 170
diff changeset
849
176
fa6cfb85444e on going ...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
850 public void setConnectionParam(CreateConnectionParam createConnectionParam) {
fa6cfb85444e on going ...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
851 cp = createConnectionParam;
fa6cfb85444e on going ...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
852 }
fa6cfb85444e on going ...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
853
fa6cfb85444e on going ...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
854 public CreateConnectionParam getConnectionParam() {
fa6cfb85444e on going ...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
855 return cp;
fa6cfb85444e on going ...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
856 }
fa6cfb85444e on going ...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
857
178
34b7558aeffa remove TreeTask, StartTreeHandling
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
858 public boolean hasViewer() {
34b7558aeffa remove TreeTask, StartTreeHandling
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
859 return hasViewer;
34b7558aeffa remove TreeTask, StartTreeHandling
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
860 }
34b7558aeffa remove TreeTask, StartTreeHandling
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
861
34b7558aeffa remove TreeTask, StartTreeHandling
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
862 public void setHasViewer(boolean b) {
34b7558aeffa remove TreeTask, StartTreeHandling
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
863 hasViewer = b;
34b7558aeffa remove TreeTask, StartTreeHandling
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
864 }
34b7558aeffa remove TreeTask, StartTreeHandling
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
865
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
866 public void setShowTree(boolean showTree) {
240
7310e7d7a45f add option --checkDelay.
oc
parents: 239
diff changeset
867 this.showTreeNode = showTree;
7310e7d7a45f add option --checkDelay.
oc
parents: 239
diff changeset
868 }
7310e7d7a45f add option --checkDelay.
oc
parents: 239
diff changeset
869
7310e7d7a45f add option --checkDelay.
oc
parents: 239
diff changeset
870 public void setCheckDelay(boolean checkDelay) {
7310e7d7a45f add option --checkDelay.
oc
parents: 239
diff changeset
871 this.checkDelay = checkDelay;
223
3189e210a7ed indent fix.
oc
parents: 207
diff changeset
872 }
194
b038aafeb2b0 hide VNC server's view to prevent video feed back.
oc
parents: 192
diff changeset
873
241
b21a7842a41d add option addSerialNum.
oc
parents: 240
diff changeset
874 public void setAddSerialNum(boolean addSerialNum) {
b21a7842a41d add option addSerialNum.
oc
parents: 240
diff changeset
875 this.addSerialNum = addSerialNum;
b21a7842a41d add option addSerialNum.
oc
parents: 240
diff changeset
876 }
b21a7842a41d add option addSerialNum.
oc
parents: 240
diff changeset
877
235
15e66adbb8bb get checkdelay nodeNum.
oc
parents: 234
diff changeset
878 public int getNodeNum(int port, String address) {
232
6ee4cdca104c send value of port and localhost in checkdelay framebufferupdate, and get this.
oc
parents: 231
diff changeset
879 int nodeNum = 0;
235
15e66adbb8bb get checkdelay nodeNum.
oc
parents: 234
diff changeset
880
232
6ee4cdca104c send value of port and localhost in checkdelay framebufferupdate, and get this.
oc
parents: 231
diff changeset
881 for (Iterator<TreeVNCNode> i = nodeList.iterator(); i.hasNext();) {
6ee4cdca104c send value of port and localhost in checkdelay framebufferupdate, and get this.
oc
parents: 231
diff changeset
882 TreeVNCNode tvn = (TreeVNCNode)i.next();
235
15e66adbb8bb get checkdelay nodeNum.
oc
parents: 234
diff changeset
883 if (port == tvn.port && address.equals(tvn.hostname)) {
15e66adbb8bb get checkdelay nodeNum.
oc
parents: 234
diff changeset
884 nodeNum = tvn.treeNum;
15e66adbb8bb get checkdelay nodeNum.
oc
parents: 234
diff changeset
885 return nodeNum;
15e66adbb8bb get checkdelay nodeNum.
oc
parents: 234
diff changeset
886 }
232
6ee4cdca104c send value of port and localhost in checkdelay framebufferupdate, and get this.
oc
parents: 231
diff changeset
887 }
6ee4cdca104c send value of port and localhost in checkdelay framebufferupdate, and get this.
oc
parents: 231
diff changeset
888 return nodeNum;
6ee4cdca104c send value of port and localhost in checkdelay framebufferupdate, and get this.
oc
parents: 231
diff changeset
889 }
241
b21a7842a41d add option addSerialNum.
oc
parents: 240
diff changeset
890
257
11b59b223222 add function of fixing display size
oc
parents: 256
diff changeset
891 public void setFixingSize(boolean fixingSize) {
11b59b223222 add function of fixing display size
oc
parents: 256
diff changeset
892 this.fixingSize = fixingSize;
256
dfec8bc1eb8e fix --retina option
oc
parents: 255
diff changeset
893 }
267
5f697251860b add --filterSingleDisplay option.
oc
parents: 266
diff changeset
894
5f697251860b add --filterSingleDisplay option.
oc
parents: 266
diff changeset
895 public void setFilterSingleDisplay(boolean filterSingleDisplay) {
5f697251860b add --filterSingleDisplay option.
oc
parents: 266
diff changeset
896 this.filterSingleDisplay = filterSingleDisplay;
5f697251860b add --filterSingleDisplay option.
oc
parents: 266
diff changeset
897 }
281
16d3584ae7a0 fix SEND_SINGLE_DISPLAY_WIDTH
oc
parents: 280
diff changeset
898
293
d1ceb4b7097a add function receive sound.
oc
parents: 292
diff changeset
899 private DatagramSocket createSocket() {
d1ceb4b7097a add function receive sound.
oc
parents: 292
diff changeset
900
d1ceb4b7097a add function receive sound.
oc
parents: 292
diff changeset
901 try {
d1ceb4b7097a add function receive sound.
oc
parents: 292
diff changeset
902 if (socket == null) {
d1ceb4b7097a add function receive sound.
oc
parents: 292
diff changeset
903 this.socket = new DatagramSocket(ConnectionParams.DEFAULT_RTP_PORT, InetAddress.getLocalHost());
d1ceb4b7097a add function receive sound.
oc
parents: 292
diff changeset
904 }
d1ceb4b7097a add function receive sound.
oc
parents: 292
diff changeset
905 } catch (SocketException e) {
d1ceb4b7097a add function receive sound.
oc
parents: 292
diff changeset
906 e.printStackTrace();
d1ceb4b7097a add function receive sound.
oc
parents: 292
diff changeset
907 } catch (UnknownHostException e) {
d1ceb4b7097a add function receive sound.
oc
parents: 292
diff changeset
908 e.printStackTrace();
d1ceb4b7097a add function receive sound.
oc
parents: 292
diff changeset
909 }
d1ceb4b7097a add function receive sound.
oc
parents: 292
diff changeset
910 return socket;
d1ceb4b7097a add function receive sound.
oc
parents: 292
diff changeset
911 }
306
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
912
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
913 public void setSingleDisplaySize(int singleWidth, int singleHeight) {
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
914 this.singleWidth = singleWidth;
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
915 this.singleHeight = singleHeight;
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
916 }
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
917
358
59b1ef1b0a89 fix ilter single display (HiDPI)
oc
parents: 357
diff changeset
918
306
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
919 public int getSingleWidth() {
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
920 return singleWidth;
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
921 }
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
922
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
923 public int getSingleHeight() {
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
924 return singleHeight;
5e55cc34f789 change public to private
oc
parents: 305
diff changeset
925 }
339
4713559f5838 if have a parent, send serverChangeRequest and whereToConnect
oc
parents: 335
diff changeset
926
4713559f5838 if have a parent, send serverChangeRequest and whereToConnect
oc
parents: 335
diff changeset
927 public boolean hasParent() {
4713559f5838 if have a parent, send serverChangeRequest and whereToConnect
oc
parents: 335
diff changeset
928 return id != -1;
4713559f5838 if have a parent, send serverChangeRequest and whereToConnect
oc
parents: 335
diff changeset
929 }
240
7310e7d7a45f add option --checkDelay.
oc
parents: 239
diff changeset
930 }