comparison src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java @ 239:d655db005535

create sendCheckDelay Socket.
author oc
date Sat, 11 Oct 2014 23:46:22 +0900
parents 6ee4cdca104c
children 83d0256a8808
comparison
equal deleted inserted replaced
238:e21ef8f60f7a 239:d655db005535
9 import com.glavsoft.rfb.encoding.EncodingType; 9 import com.glavsoft.rfb.encoding.EncodingType;
10 import com.glavsoft.transport.Reader; 10 import com.glavsoft.transport.Reader;
11 11
12 public class ZRLEESender extends Decoder { 12 public class ZRLEESender extends Decoder {
13 13
14 private TreeRFBProto rfb; 14 private TreeRFBProto rfb;
15 15
16 public ZRLEESender(TreeRFBProto rfb) { 16 public ZRLEESender(TreeRFBProto rfb) {
17 this.rfb = rfb; 17 this.rfb = rfb;
18 } 18 }
19 19
20 public ZRLEESender() { 20 public ZRLEESender() {
21 } 21 }
22 22
23 @Override 23 @Override
24 public void decode(Reader reader, Renderer renderer, 24 public void decode(Reader reader, Renderer renderer,
25 FramebufferUpdateRectangle rect) throws TransportException, UnsupportedEncodingException { 25 FramebufferUpdateRectangle rect) throws TransportException, UnsupportedEncodingException {
26 // TreeVNC handling 26 // TreeVNC handling
27 int dataLen = getZrleLength(rect, reader); 27 int dataLen = getZrleLength(rect, reader);
28 byte[] bytes = new byte[rect.width * rect.height * renderer.getBytesPerPixel()]; 28 byte[] bytes = new byte[rect.width * rect.height * renderer.getBytesPerPixel()];
29 reader.reset(); 29 reader.reset();
30 if (rfb.hasViewer()) { 30 if (rfb.hasViewer()) {
31 ZRLEDecoder decoder = new ZRLEDecoder(); 31 ZRLEDecoder decoder = new ZRLEDecoder();
32 if (rfb.isTreeManager()) { 32 if (rfb.isTreeManager()) {
33 rfb.readSendData(dataLen, reader, bytes); 33 rfb.readSendData(dataLen, reader, bytes);
34 decoder.decode1(renderer, rect, bytes, 0); 34 decoder.decode1(renderer, rect, bytes, 0);
35 return; 35 return;
36 } else if (!rfb.getCuiVersion()) { 36 } else if (!rfb.getCuiVersion()) {
37 rfb.readSendData(dataLen, reader, null); 37 rfb.readSendData(dataLen, reader, null);
38 reader.reset(); 38 reader.reset();
39 reader.skip(16); 39 reader.skip(16);
40 decoder.decode(reader, renderer, rect); 40 decoder.decode(reader, renderer, rect);
41 return; 41 return;
42 } 42 }
43 } 43 }
44 rfb.readSendData(dataLen, reader, bytes); 44 rfb.readSendData(dataLen, reader, bytes);
45 } 45 }
46 46
47 private int getZrleLength(FramebufferUpdateRectangle rect, Reader reader) 47 private int getZrleLength(FramebufferUpdateRectangle rect, Reader reader)
48 throws TransportException { 48 throws TransportException {
49 int zrleLength = 0; 49 int zrleLength = 0;
50 if (rect.getEncodingType() == EncodingType.ZRLE 50 if (rect.getEncodingType() == EncodingType.ZRLE
51 || rect.getEncodingType() == EncodingType.ZRLEE 51 || rect.getEncodingType() == EncodingType.ZRLEE
52 || rect.getEncodingType() == EncodingType.ZLIB) { 52 || rect.getEncodingType() == EncodingType.ZLIB) {
53 zrleLength = reader.readInt32(); 53 zrleLength = reader.readInt32();
54 } 54 }
55 return zrleLength + 20; 55 return zrleLength + 20;
56 } 56 }
57 57
58 public void readCheckDelay(Reader reader) {
59 try {
60 reader.reset();
61 rfb.readCheckDelay(reader);
62 } catch (TransportException e) {
63 e.printStackTrace();
64 }
65 }
66 } 58 }