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
|
|
10 public class ReceiveChangeRequest extends CodeSegment {
|
|
11 private Receiver info = ids.create(CommandType.TAKE);
|
|
12 private Receiver info1 = ids.create(CommandType.PEEK); // connection list
|
|
13
|
|
14 public ReceiveChangeRequest() {
|
|
15 info.setKey("changeRequest");
|
|
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);
|
|
29 ods.put("parent", "changeRequest", order);
|
|
30 new ReceiveChangeRequest();
|
|
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);
|
|
35 new ReceiveChangeRequest();
|
|
36 } else {
|
26
|
37 System.out.println("coming Server change request from "+ order.name+" "+order.route.size());
|
27
|
38 new CheckCurrentInfo(order); // check change Server flag.
|
24
|
39 }
|
|
40 }
|
27
|
41 } else if (order.messageID == MessageType.StartNegotiate.getId()||
|
|
42 order.messageID == MessageType.StopProxy.getId()) {
|
24
|
43 if (order.route.size() == 0) {
|
27
|
44 if (order.messageID == MessageType.StartNegotiate.getId()){
|
|
45 // this node send ChangeVNCRequest
|
|
46 System.out.println("coming StartNegotiate from "+ order.name);
|
30
|
47
|
27
|
48 // negotiate VNCServer by Viewer
|
30
|
49 ods.put("vncRight", true);
|
|
50 new NegotiateVNCServer();
|
|
51 new ReceiveChangeRequest();
|
27
|
52 } else {
|
|
53 new StopProxy();
|
|
54 }
|
24
|
55 } else {
|
28
|
56 int last = order.route.size() - 1;
|
|
57 String address = order.route.get(last);
|
|
58 order.route.remove(last);
|
24
|
59 ods.put(address, "changeRequest", order);
|
29
|
60 new ReceiveChangeRequest();
|
24
|
61 }
|
23
|
62 }
|
22
|
63 }
|
|
64 } |