22
|
1 package jp.ac.u_ryukyu.alicevnc;
|
|
2
|
|
3 import java.util.List;
|
|
4
|
32
|
5 import jp.ac.u_ryukyu.alicevnc.AliceVNCMessage.MessageType;
|
22
|
6 import alice.codesegment.CodeSegment;
|
|
7 import alice.datasegment.CommandType;
|
|
8 import alice.datasegment.Receiver;
|
|
9
|
34
|
10 public class ReceiveAliceVNCMessage extends CodeSegment {
|
22
|
11 private Receiver info = ids.create(CommandType.TAKE);
|
|
12 private Receiver info1 = ids.create(CommandType.PEEK); // connection list
|
|
13
|
34
|
14 public ReceiveAliceVNCMessage() {
|
|
15 info.setKey("AliceVNCMessage");
|
22
|
16 info1.setKey("_CLIST");
|
|
17 }
|
|
18
|
|
19 @Override
|
|
20 public void run() {
|
32
|
21 AliceVNCMessage order = info.asClass(AliceVNCMessage.class);
|
22
|
22
|
|
23 @SuppressWarnings("unchecked")
|
|
24 List<String> clist = info1.asClass(List.class);
|
24
|
25 if (order.messageID == MessageType.ChangeRequest.getId()||
|
|
26 order.messageID == MessageType.CurrentVNCInfo.getId()) {
|
|
27 if (clist.contains("parent")){
|
|
28 order.route.add(info.from);
|
34
|
29 ods.put("parent", "AliceVNCMessage", order);
|
|
30 new ReceiveAliceVNCMessage();
|
24
|
31 } else { // this node is root.
|
26
|
32 order.route.add(info.from);
|
24
|
33 if (order.messageID == MessageType.CurrentVNCInfo.getId()) {
|
|
34 ods.put("currentServer", order);
|
34
|
35 new ReceiveAliceVNCMessage();
|
24
|
36 } else {
|
27
|
37 new CheckCurrentInfo(order); // check change Server flag.
|
24
|
38 }
|
|
39 }
|
27
|
40 } else if (order.messageID == MessageType.StartNegotiate.getId()||
|
34
|
41 order.messageID == MessageType.StopProxy.getId()||
|
|
42 order.messageID == MessageType.DeniedRequest.getId()) {
|
24
|
43 if (order.route.size() == 0) {
|
34
|
44 // this node send ChangeVNCRequest
|
27
|
45 if (order.messageID == MessageType.StartNegotiate.getId()){
|
|
46 // negotiate VNCServer by Viewer
|
30
|
47 ods.put("vncRight", true);
|
|
48 new NegotiateVNCServer();
|
34
|
49 new ReceiveAliceVNCMessage();
|
|
50 } else if(order.messageID == MessageType.StopProxy.getId()) {
|
27
|
51 new StopProxy();
|
34
|
52 } else if (order.messageID == MessageType.DeniedRequest.getId()) {
|
|
53 // pop up window or message
|
27
|
54 }
|
24
|
55 } else {
|
34
|
56 String address = order.getNextAddress();
|
|
57 ods.put(address, "AliceVNCMessage", order);
|
|
58 new ReceiveAliceVNCMessage();
|
24
|
59 }
|
23
|
60 }
|
22
|
61 }
|
|
62 } |