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
|
47
|
14 public ReceiveAliceVNCMessage(CodeSegment cs) {
|
|
15 this.aliceDaemon = cs.aliceDaemon;
|
|
16 info.setKey("AliceVNCMessage", this);
|
|
17 info1.setKey("_CLIST", this);
|
22
|
18 }
|
|
19
|
|
20 @Override
|
|
21 public void run() {
|
32
|
22 AliceVNCMessage order = info.asClass(AliceVNCMessage.class);
|
22
|
23
|
|
24 @SuppressWarnings("unchecked")
|
|
25 List<String> clist = info1.asClass(List.class);
|
24
|
26 if (order.messageID == MessageType.ChangeRequest.getId()||
|
|
27 order.messageID == MessageType.CurrentVNCInfo.getId()) {
|
|
28 if (clist.contains("parent")){
|
|
29 order.route.add(info.from);
|
34
|
30 ods.put("parent", "AliceVNCMessage", order);
|
47
|
31 new ReceiveAliceVNCMessage(this);
|
24
|
32 } else { // this node is root.
|
26
|
33 order.route.add(info.from);
|
24
|
34 if (order.messageID == MessageType.CurrentVNCInfo.getId()) {
|
|
35 ods.put("currentServer", order);
|
47
|
36 new ReceiveAliceVNCMessage(this);
|
24
|
37 } else {
|
47
|
38 new CheckCurrentInfo(order, this); // check change Server flag.
|
24
|
39 }
|
|
40 }
|
27
|
41 } else if (order.messageID == MessageType.StartNegotiate.getId()||
|
34
|
42 order.messageID == MessageType.StopProxy.getId()||
|
|
43 order.messageID == MessageType.DeniedRequest.getId()) {
|
24
|
44 if (order.route.size() == 0) {
|
34
|
45 // this node send ChangeVNCRequest
|
27
|
46 if (order.messageID == MessageType.StartNegotiate.getId()){
|
|
47 // negotiate VNCServer by Viewer
|
30
|
48 ods.put("vncRight", true);
|
47
|
49 new NegotiateVNCServer(this);
|
|
50 new ReceiveAliceVNCMessage(this);
|
34
|
51 } else if(order.messageID == MessageType.StopProxy.getId()) {
|
27
|
52 new StopProxy();
|
34
|
53 } else if (order.messageID == MessageType.DeniedRequest.getId()) {
|
|
54 // pop up window or message
|
27
|
55 }
|
24
|
56 } else {
|
34
|
57 String address = order.getNextAddress();
|
|
58 ods.put(address, "AliceVNCMessage", order);
|
47
|
59 new ReceiveAliceVNCMessage(this);
|
24
|
60 }
|
23
|
61 }
|
22
|
62 }
|
|
63 } |