annotate src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java @ 533:4be31e107121

fix bloking
author riono210
date Sun, 05 May 2019 18:32:55 +0900
parents fcd833c2e148
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26
73b13bc335c2 add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff changeset
1 package com.glavsoft.rfb.encoding.decoder;
73b13bc335c2 add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff changeset
2
232
6ee4cdca104c send value of port and localhost in checkdelay framebufferupdate, and get this.
oc
parents: 207
diff changeset
3 import java.io.UnsupportedEncodingException;
526
fcd833c2e148 Multicast Bloking in ZRLEDecoder
riono210
parents: 520
diff changeset
4 import java.nio.ByteBuffer;
232
6ee4cdca104c send value of port and localhost in checkdelay framebufferupdate, and get this.
oc
parents: 207
diff changeset
5
533
4be31e107121 fix bloking
riono210
parents: 526
diff changeset
6 import com.glavsoft.rfb.protocol.NullRenderer;
207
b31903e5b02d rename myRFBProto
oc
parents: 204
diff changeset
7 import jp.ac.u_ryukyu.treevnc.TreeRFBProto;
26
73b13bc335c2 add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff changeset
8
73b13bc335c2 add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff changeset
9 import com.glavsoft.drawing.Renderer;
73b13bc335c2 add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff changeset
10 import com.glavsoft.exceptions.TransportException;
73b13bc335c2 add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff changeset
11 import com.glavsoft.rfb.encoding.EncodingType;
73b13bc335c2 add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff changeset
12 import com.glavsoft.transport.Reader;
73b13bc335c2 add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff changeset
13
73b13bc335c2 add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff changeset
14 public class ZRLEESender extends Decoder {
66
84ad879891e9 dont move
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 65
diff changeset
15
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
16 private TreeRFBProto rfb;
26
73b13bc335c2 add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff changeset
17
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
18 public ZRLEESender(TreeRFBProto rfb) {
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
19 this.rfb = rfb;
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
20 }
66
84ad879891e9 dont move
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 65
diff changeset
21
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
22 public ZRLEESender() {
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
23 }
66
84ad879891e9 dont move
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 65
diff changeset
24
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
25 @Override
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
26 public void decode(Reader reader, Renderer renderer,
275
0f9b3de45fb2 set main display size.
oc
parents: 264
diff changeset
27 FramebufferUpdateRectangle rect) throws TransportException, UnsupportedEncodingException {
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
28 // TreeVNC handling
185
feefc1e58153 minor fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 184
diff changeset
29 int dataLen = getZrleLength(rect, reader);
189
f381159e38f3 fix readSendData.
oc
parents: 186
diff changeset
30 reader.reset();
520
3a9dadc8821f multicast packet is recieved
mir3636
parents: 516
diff changeset
31 //System.out.println("ZRLEESender: " + rect + " length: " + dataLen);
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
32 if (rfb.hasViewer()) {
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
33 ZRLEDecoder decoder = new ZRLEDecoder();
381
47c018aed50e Change condition to ZRLEESender.decode method
innparusu
parents: 380
diff changeset
34 if (rect.getEncodingType() == EncodingType.ZRLE) {
47c018aed50e Change condition to ZRLEESender.decode method
innparusu
parents: 380
diff changeset
35 // ReadSendData convert ZRLE to ZRLEE
47c018aed50e Change condition to ZRLEESender.decode method
innparusu
parents: 380
diff changeset
36 // unzipped data in the bytes
500
6609174beafe fix subencoding
oshiro
parents: 498
diff changeset
37 byte[] bytes = new byte[rect.width * rect.height * renderer.getBytesPerPixel()];
533
4be31e107121 fix bloking
riono210
parents: 526
diff changeset
38 if (rfb.multicastBlocking) {
4be31e107121 fix bloking
riono210
parents: 526
diff changeset
39 decoder.multicastDecode(reader, renderer, rect, rfb);
4be31e107121 fix bloking
riono210
parents: 526
diff changeset
40 } else {
4be31e107121 fix bloking
riono210
parents: 526
diff changeset
41 ByteBuffer header = rfb.readSendData(dataLen, reader, bytes, rect);
4be31e107121 fix bloking
riono210
parents: 526
diff changeset
42 decoder.decode1(renderer, header, rect, bytes, 0, rfb);
4be31e107121 fix bloking
riono210
parents: 526
diff changeset
43 }
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
44 return;
381
47c018aed50e Change condition to ZRLEESender.decode method
innparusu
parents: 380
diff changeset
45 } else {
47c018aed50e Change condition to ZRLEESender.decode method
innparusu
parents: 380
diff changeset
46 // no reencoding is required
47c018aed50e Change condition to ZRLEESender.decode method
innparusu
parents: 380
diff changeset
47 // readSend does not peform unzip, do the fullrecoding
264
83d0256a8808 add fixing display filter.
oc
parents: 239
diff changeset
48 rfb.readSendData(dataLen, reader, null, rect);
380
aef5cbdd84ab Fix compare SerialNumber flag
innparusu
parents: 378
diff changeset
49 reader.reset();
414
3af5f4af2d63 Send data size for checkDelay
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 381
diff changeset
50 if (rect.getEncodingType() == EncodingType.CHECK_DELAY) {
3af5f4af2d63 Send data size for checkDelay
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 381
diff changeset
51 reader.skip(24);
3af5f4af2d63 Send data size for checkDelay
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 381
diff changeset
52 } else {
3af5f4af2d63 Send data size for checkDelay
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 381
diff changeset
53 reader.skip(16);
3af5f4af2d63 Send data size for checkDelay
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 381
diff changeset
54 }
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
55 decoder.decode(reader, renderer, rect);
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
56 return;
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
57 }
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
58 }
533
4be31e107121 fix bloking
riono210
parents: 526
diff changeset
59 if (rfb.multicastBlocking) {
4be31e107121 fix bloking
riono210
parents: 526
diff changeset
60 // do something
4be31e107121 fix bloking
riono210
parents: 526
diff changeset
61 ZRLEDecoder decoder = new ZRLEDecoder();
4be31e107121 fix bloking
riono210
parents: 526
diff changeset
62 decoder.multicastDecode(reader, renderer, rect, rfb);
4be31e107121 fix bloking
riono210
parents: 526
diff changeset
63 } else {
4be31e107121 fix bloking
riono210
parents: 526
diff changeset
64 byte[] bytes = new byte[dataLen];
4be31e107121 fix bloking
riono210
parents: 526
diff changeset
65 rfb.readSendData(dataLen, reader, bytes, rect);
4be31e107121 fix bloking
riono210
parents: 526
diff changeset
66 }
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
67 }
26
73b13bc335c2 add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff changeset
68
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
69 private int getZrleLength(FramebufferUpdateRectangle rect, Reader reader)
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
70 throws TransportException {
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
71 int zrleLength = 0;
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
72 if (rect.getEncodingType() == EncodingType.ZRLE
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
73 || rect.getEncodingType() == EncodingType.ZRLEE
414
3af5f4af2d63 Send data size for checkDelay
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 381
diff changeset
74 || rect.getEncodingType() == EncodingType.ZLIB || rect.getEncodingType() == EncodingType.CHECK_DELAY) {
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
75 zrleLength = reader.readInt32();
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
76 }
414
3af5f4af2d63 Send data size for checkDelay
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 381
diff changeset
77 if (rect.getEncodingType() == EncodingType.CHECK_DELAY) {
415
5c3635d6ab3c Send Check_Delay packet if checkDelay flag is true
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 414
diff changeset
78 // plus time byte
5c3635d6ab3c Send Check_Delay packet if checkDelay flag is true
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 414
diff changeset
79 return zrleLength + 20 + 8;
414
3af5f4af2d63 Send data size for checkDelay
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 381
diff changeset
80 }
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
81 return zrleLength + 20;
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
82 }
66
84ad879891e9 dont move
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 65
diff changeset
83
26
73b13bc335c2 add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff changeset
84 }