Mercurial > hg > Members > riono > TreeVNC_ja_comment
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 |
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 | 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 | 6 import com.glavsoft.rfb.protocol.NullRenderer; |
207 | 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 | 15 |
239 | 16 private TreeRFBProto rfb; |
26
73b13bc335c2
add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff
changeset
|
17 |
239 | 18 public ZRLEESender(TreeRFBProto rfb) { |
19 this.rfb = rfb; | |
20 } | |
66 | 21 |
239 | 22 public ZRLEESender() { |
23 } | |
66 | 24 |
239 | 25 @Override |
26 public void decode(Reader reader, Renderer renderer, | |
275 | 27 FramebufferUpdateRectangle rect) throws TransportException, UnsupportedEncodingException { |
239 | 28 // TreeVNC handling |
185 | 29 int dataLen = getZrleLength(rect, reader); |
189 | 30 reader.reset(); |
520 | 31 //System.out.println("ZRLEESender: " + rect + " length: " + dataLen); |
239 | 32 if (rfb.hasViewer()) { |
33 ZRLEDecoder decoder = new ZRLEDecoder(); | |
381 | 34 if (rect.getEncodingType() == EncodingType.ZRLE) { |
35 // ReadSendData convert ZRLE to ZRLEE | |
36 // unzipped data in the bytes | |
500 | 37 byte[] bytes = new byte[rect.width * rect.height * renderer.getBytesPerPixel()]; |
533 | 38 if (rfb.multicastBlocking) { |
39 decoder.multicastDecode(reader, renderer, rect, rfb); | |
40 } else { | |
41 ByteBuffer header = rfb.readSendData(dataLen, reader, bytes, rect); | |
42 decoder.decode1(renderer, header, rect, bytes, 0, rfb); | |
43 } | |
239 | 44 return; |
381 | 45 } else { |
46 // no reencoding is required | |
47 // readSend does not peform unzip, do the fullrecoding | |
264 | 48 rfb.readSendData(dataLen, reader, null, rect); |
380 | 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 | 55 decoder.decode(reader, renderer, rect); |
56 return; | |
57 } | |
58 } | |
533 | 59 if (rfb.multicastBlocking) { |
60 // do something | |
61 ZRLEDecoder decoder = new ZRLEDecoder(); | |
62 decoder.multicastDecode(reader, renderer, rect, rfb); | |
63 } else { | |
64 byte[] bytes = new byte[dataLen]; | |
65 rfb.readSendData(dataLen, reader, bytes, rect); | |
66 } | |
239 | 67 } |
26
73b13bc335c2
add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff
changeset
|
68 |
239 | 69 private int getZrleLength(FramebufferUpdateRectangle rect, Reader reader) |
70 throws TransportException { | |
71 int zrleLength = 0; | |
72 if (rect.getEncodingType() == EncodingType.ZRLE | |
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 | 75 zrleLength = reader.readInt32(); |
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 | 81 return zrleLength + 20; |
82 } | |
66 | 83 |
26
73b13bc335c2
add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff
changeset
|
84 } |