comparison src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveAliceVNCMessage.java @ 34:aace9df1462e

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