annotate src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveUpdateRectangle.java @ 40:47d6f7a76b86

for measurement
author sugi
date Mon, 08 Dec 2014 22:05:56 +0900
parents 1fa4b7b8d19f
children 1cb529b46876
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
1 package jp.ac.u_ryukyu.alicevnc;
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
2
5
c05d3b89b446 Send DecodeInfo to Children Nodes. but occur ArrayIndexOutOfBoundsException.
YU
parents: 4
diff changeset
3 import java.util.ArrayList;
c05d3b89b446 Send DecodeInfo to Children Nodes. but occur ArrayIndexOutOfBoundsException.
YU
parents: 4
diff changeset
4
32
7d65ad341cc9 refactor
sugi
parents: 31
diff changeset
5 import jp.ac.u_ryukyu.ie.cr.DecodeInfomation;
7d65ad341cc9 refactor
sugi
parents: 31
diff changeset
6
2
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
7 import com.glavsoft.exceptions.TransportException;
4
9a24e36d8ed7 use constructor for setting parms
YU
parents: 2
diff changeset
8 import com.glavsoft.rfb.encoding.EncodingType;
2
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
9 import com.glavsoft.rfb.encoding.decoder.FramebufferUpdateRectangle;
12
66c06ebbced1 refactor
YU
parents: 11
diff changeset
10 import com.glavsoft.rfb.encoding.decoder.RichCursorDecoder;
2
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
11 import com.glavsoft.rfb.encoding.decoder.ZRLEDecoder;
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
12
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
13 import alice.codesegment.CodeSegment;
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
14 import alice.datasegment.CommandType;
40
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
15 import alice.datasegment.ReceiveData;
2
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
16 import alice.datasegment.Receiver;
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
17
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
18 public class ReceiveUpdateRectangle extends CodeSegment{
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
19
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
20 private Receiver info = ids.create(CommandType.PEEK);
17
f4ecd1f01f0b separate byteArray from others
sugi
parents: 12
diff changeset
21 private Receiver info1 = ids.create(CommandType.TAKE); // AliceVNC Message
f4ecd1f01f0b separate byteArray from others
sugi
parents: 12
diff changeset
22 private Receiver info2 = ids.create(CommandType.TAKE);
f4ecd1f01f0b separate byteArray from others
sugi
parents: 12
diff changeset
23 private Receiver info3 = ids.create(CommandType.PEEK);
5
c05d3b89b446 Send DecodeInfo to Children Nodes. but occur ArrayIndexOutOfBoundsException.
YU
parents: 4
diff changeset
24
2
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
25 public ReceiveUpdateRectangle(){
31
556e27a53219 refactor and bug fix
sugi
parents: 20
diff changeset
26 info.setKey("holder");
32
7d65ad341cc9 refactor
sugi
parents: 31
diff changeset
27 info1.setKey("updateRectangle");
7d65ad341cc9 refactor
sugi
parents: 31
diff changeset
28 info2.setKey("pixelData");
17
f4ecd1f01f0b separate byteArray from others
sugi
parents: 12
diff changeset
29 info3.setKey("_CLIST");
2
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
30 }
5
c05d3b89b446 Send DecodeInfo to Children Nodes. but occur ArrayIndexOutOfBoundsException.
YU
parents: 4
diff changeset
31
10
65d989192d63 change Protocol aliceVNCMessage
YU
parents: 5
diff changeset
32 @Override
2
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
33 public void run() {
40
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
34 // for measurement;
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
35 long time = System.currentTimeMillis();
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
36 MeasurementData md = null;
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
37 if (info2.getReceiveData().setTime) {
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
38 ReceiveData r = info2.getReceiveData();
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
39 md = new MeasurementData();
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
40 md.depth = r.depth;
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
41 md.time = time - r.time;
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
42 md.size = ((byte[])info2.getObj()).length;
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
43 }
17
f4ecd1f01f0b separate byteArray from others
sugi
parents: 12
diff changeset
44 // send other node
f4ecd1f01f0b separate byteArray from others
sugi
parents: 12
diff changeset
45 @SuppressWarnings("unchecked")
f4ecd1f01f0b separate byteArray from others
sugi
parents: 12
diff changeset
46 ArrayList<String> clist = info3.asClass(ArrayList.class);
f4ecd1f01f0b separate byteArray from others
sugi
parents: 12
diff changeset
47 for (String node : clist){
31
556e27a53219 refactor and bug fix
sugi
parents: 20
diff changeset
48 if (!info1.from.equals(node)) {
17
f4ecd1f01f0b separate byteArray from others
sugi
parents: 12
diff changeset
49 // not need send data comes from
31
556e27a53219 refactor and bug fix
sugi
parents: 20
diff changeset
50 // Data Segment from other node is already serialized
35
1fa4b7b8d19f add TODO
one
parents: 33
diff changeset
51 ods.put(node, "updateRectangle", info1.getReceiveData()); //TODO need timeout counter
20
15398aebb0ef refactor
sugi
parents: 19
diff changeset
52 //ods.setCompressFlag(true);
40
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
53
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
54 // for measurement
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
55 ReceiveData r = info2.getReceiveData();
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
56 if (!r.setTime) {
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
57 r.setTime = true;
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
58 r.time = System.currentTimeMillis();
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
59 }
32
7d65ad341cc9 refactor
sugi
parents: 31
diff changeset
60 ods.put(node, "pixelData", info2.getReceiveData());
19
3a310b5e1eae change render Type
sugi
parents: 17
diff changeset
61 ods.setCompressFlag(false);
17
f4ecd1f01f0b separate byteArray from others
sugi
parents: 12
diff changeset
62 }
40
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
63 }
31
556e27a53219 refactor and bug fix
sugi
parents: 20
diff changeset
64
556e27a53219 refactor and bug fix
sugi
parents: 20
diff changeset
65
2
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
66 try {
10
65d989192d63 change Protocol aliceVNCMessage
YU
parents: 5
diff changeset
67 RenderAndControllerHolder holder = info.asClass(RenderAndControllerHolder.class);
32
7d65ad341cc9 refactor
sugi
parents: 31
diff changeset
68 DecodeInfomation message = info1.asClass(DecodeInfomation.class);
10
65d989192d63 change Protocol aliceVNCMessage
YU
parents: 5
diff changeset
69
35
1fa4b7b8d19f add TODO
one
parents: 33
diff changeset
70 if (message.getEncodingType() == EncodingType.ZRLEE){ //TODO
10
65d989192d63 change Protocol aliceVNCMessage
YU
parents: 5
diff changeset
71 ZRLEDecoder decoder = new ZRLEDecoder();
65d989192d63 change Protocol aliceVNCMessage
YU
parents: 5
diff changeset
72 FramebufferUpdateRectangle rect = new FramebufferUpdateRectangle(
65d989192d63 change Protocol aliceVNCMessage
YU
parents: 5
diff changeset
73 message.x, message.y, message.width, message.height);
12
66c06ebbced1 refactor
YU
parents: 11
diff changeset
74 rect.encodingType = message.getEncodingType();
17
f4ecd1f01f0b separate byteArray from others
sugi
parents: 12
diff changeset
75 byte[] buf = info2.asClass(byte[].class);
31
556e27a53219 refactor and bug fix
sugi
parents: 20
diff changeset
76
17
f4ecd1f01f0b separate byteArray from others
sugi
parents: 12
diff changeset
77 // this method name is wrong.
19
3a310b5e1eae change render Type
sugi
parents: 17
diff changeset
78 decoder.decode(holder.getRenderer(), rect, buf, 0);
10
65d989192d63 change Protocol aliceVNCMessage
YU
parents: 5
diff changeset
79 holder.getRepaintController().repaintBitmap(rect);
65d989192d63 change Protocol aliceVNCMessage
YU
parents: 5
diff changeset
80
31
556e27a53219 refactor and bug fix
sugi
parents: 20
diff changeset
81 } else if (message.getEncodingType() == EncodingType.DESKTOP_SIZE) {
10
65d989192d63 change Protocol aliceVNCMessage
YU
parents: 5
diff changeset
82 holder.setRenderer(
31
556e27a53219 refactor and bug fix
sugi
parents: 20
diff changeset
83 holder.getRepaintController().createRenderer(null, message.width,
11
aff2d0bb9c50 Viewable multi display
YU
parents: 10
diff changeset
84 message.height, message.getPixelFormat())
10
65d989192d63 change Protocol aliceVNCMessage
YU
parents: 5
diff changeset
85 );
33
6f5986d8ecd5 prevent video feedback
sugi
parents: 32
diff changeset
86 boolean visible = true;
6f5986d8ecd5 prevent video feedback
sugi
parents: 32
diff changeset
87 if ("local".equals(info2.from)) {
6f5986d8ecd5 prevent video feedback
sugi
parents: 32
diff changeset
88 visible = false;
6f5986d8ecd5 prevent video feedback
sugi
parents: 32
diff changeset
89 }
6f5986d8ecd5 prevent video feedback
sugi
parents: 32
diff changeset
90 holder.getViewerWindow().setVisible(visible);
12
66c06ebbced1 refactor
YU
parents: 11
diff changeset
91 } else if (message.getEncodingType() == EncodingType.RICH_CURSOR) {
17
f4ecd1f01f0b separate byteArray from others
sugi
parents: 12
diff changeset
92 byte[] buf = info2.asClass(byte[].class);
f4ecd1f01f0b separate byteArray from others
sugi
parents: 12
diff changeset
93 RichCursorDecoder.getInstance().decode(holder.getRenderer(), message, buf);
12
66c06ebbced1 refactor
YU
parents: 11
diff changeset
94 holder.getRepaintController().repaintCursor();
31
556e27a53219 refactor and bug fix
sugi
parents: 20
diff changeset
95
12
66c06ebbced1 refactor
YU
parents: 11
diff changeset
96 }
40
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
97 // for measurement
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
98 if (md !=null)
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
99 ods.put("parent", "measurement", md);
47d6f7a76b86 for measurement
sugi
parents: 35
diff changeset
100
35
1fa4b7b8d19f add TODO
one
parents: 33
diff changeset
101 this.recycle(); //TODO
10
65d989192d63 change Protocol aliceVNCMessage
YU
parents: 5
diff changeset
102
2
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
103 } catch (TransportException e) {
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
104 e.printStackTrace();
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
105 }
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
106 }
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
107
e046eb8a3ac1 succeed to repaint another viewer
YU
parents:
diff changeset
108 }