Mercurial > hg > Applications > AliceVNC
annotate src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveUpdateRectangle.java @ 64:66f95be0daab
add zippedSizeData to ReceiveData for AliceVNC measurement
author | Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 19 Nov 2015 03:25:54 +0900 |
parents | 9662e582ffad |
children | 3d2b82127a3c 29e061701aee |
rev | line source |
---|---|
2 | 1 package jp.ac.u_ryukyu.alicevnc; |
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 | 5 import jp.ac.u_ryukyu.ie.cr.DecodeInfomation; |
6 | |
2 | 7 import com.glavsoft.exceptions.TransportException; |
4 | 8 import com.glavsoft.rfb.encoding.EncodingType; |
2 | 9 import com.glavsoft.rfb.encoding.decoder.FramebufferUpdateRectangle; |
12 | 10 import com.glavsoft.rfb.encoding.decoder.RichCursorDecoder; |
2 | 11 import com.glavsoft.rfb.encoding.decoder.ZRLEDecoder; |
12 | |
13 import alice.codesegment.CodeSegment; | |
14 import alice.datasegment.CommandType; | |
40 | 15 import alice.datasegment.ReceiveData; |
2 | 16 import alice.datasegment.Receiver; |
17 | |
18 public class ReceiveUpdateRectangle extends CodeSegment{ | |
19 | |
20 private Receiver info = ids.create(CommandType.PEEK); | |
17 | 21 private Receiver info1 = ids.create(CommandType.TAKE); // AliceVNC Message |
22 private Receiver info2 = ids.create(CommandType.TAKE); | |
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 | 25 public ReceiveUpdateRectangle(){ |
52
57ca704f86a3
back version Alice tag:work-compressedDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
47
diff
changeset
|
26 info.setKey("holder"); |
57ca704f86a3
back version Alice tag:work-compressedDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
47
diff
changeset
|
27 info1.setKey("updateRectangle"); |
57ca704f86a3
back version Alice tag:work-compressedDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
47
diff
changeset
|
28 info2.setKey("pixelData"); |
57ca704f86a3
back version Alice tag:work-compressedDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
47
diff
changeset
|
29 info3.setKey("_CLIST"); |
2 | 30 } |
5
c05d3b89b446
Send DecodeInfo to Children Nodes. but occur ArrayIndexOutOfBoundsException.
YU
parents:
4
diff
changeset
|
31 |
41 | 32 @SuppressWarnings("unchecked") |
10 | 33 @Override |
2 | 34 public void run() { |
41 | 35 |
17 | 36 // send other node |
37 ArrayList<String> clist = info3.asClass(ArrayList.class); | |
43 | 38 // for measurement |
62
8f60ba0d29ae
change put to flip, add setter/getter setTime
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
56
diff
changeset
|
39 if (info2.getReceiveData().getSetTime()) { |
63
9662e582ffad
work AliceVNC (don't work ServerChangeRequest)
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
62
diff
changeset
|
40 ods.flip("parent", "measurement", info2); |
43 | 41 } |
17 | 42 for (String node : clist){ |
31 | 43 if (!info1.from.equals(node)) { |
17 | 44 // not need send data comes from |
31 | 45 // Data Segment from other node is already serialized |
63
9662e582ffad
work AliceVNC (don't work ServerChangeRequest)
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
62
diff
changeset
|
46 ods.flip(node, "updateRectangle", info1); //TODO need timeout counter |
40 | 47 |
48 // for measurement | |
49 ReceiveData r = info2.getReceiveData(); | |
62
8f60ba0d29ae
change put to flip, add setter/getter setTime
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
56
diff
changeset
|
50 if (!r.getSetTime()) { |
64
66f95be0daab
add zippedSizeData to ReceiveData for AliceVNC measurement
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
51 r.setTimes(System.currentTimeMillis(), true, 0);//送信時間をセット |
40 | 52 } |
63
9662e582ffad
work AliceVNC (don't work ServerChangeRequest)
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
62
diff
changeset
|
53 ods.flip(node, "pixelData", info2); |
17 | 54 } |
40 | 55 } |
31 | 56 |
2 | 57 try { |
10 | 58 RenderAndControllerHolder holder = info.asClass(RenderAndControllerHolder.class); |
32 | 59 DecodeInfomation message = info1.asClass(DecodeInfomation.class); |
10 | 60 |
35 | 61 if (message.getEncodingType() == EncodingType.ZRLEE){ //TODO |
10 | 62 ZRLEDecoder decoder = new ZRLEDecoder(); |
63 FramebufferUpdateRectangle rect = new FramebufferUpdateRectangle( | |
64 message.x, message.y, message.width, message.height); | |
12 | 65 rect.encodingType = message.getEncodingType(); |
17 | 66 byte[] buf = info2.asClass(byte[].class); |
31 | 67 |
17 | 68 // this method name is wrong. |
19 | 69 decoder.decode(holder.getRenderer(), rect, buf, 0); |
10 | 70 holder.getRepaintController().repaintBitmap(rect); |
71 | |
31 | 72 } else if (message.getEncodingType() == EncodingType.DESKTOP_SIZE) { |
10 | 73 holder.setRenderer( |
31 | 74 holder.getRepaintController().createRenderer(null, message.width, |
11 | 75 message.height, message.getPixelFormat()) |
10 | 76 ); |
33 | 77 boolean visible = true; |
78 if ("local".equals(info2.from)) { | |
79 visible = false; | |
80 } | |
81 holder.getViewerWindow().setVisible(visible); | |
12 | 82 } else if (message.getEncodingType() == EncodingType.RICH_CURSOR) { |
17 | 83 byte[] buf = info2.asClass(byte[].class); |
84 RichCursorDecoder.getInstance().decode(holder.getRenderer(), message, buf); | |
12 | 85 holder.getRepaintController().repaintCursor(); |
31 | 86 |
12 | 87 } |
40 | 88 |
35 | 89 this.recycle(); //TODO |
10 | 90 |
2 | 91 } catch (TransportException e) { |
92 e.printStackTrace(); | |
93 } | |
94 } | |
95 | |
96 } |