15
|
1 package jp.ac.u_ryukyu.alicevnc;
|
|
2
|
25
|
3 import java.util.ArrayList;
|
22
|
4 import java.util.List;
|
|
5
|
24
|
6 import jp.ac.u_ryukyu.alicevnc.ChangeRequestMessage.MessageType;
|
15
|
7 import alice.codesegment.CodeSegment;
|
|
8 import alice.datasegment.CommandType;
|
|
9 import alice.datasegment.Receiver;
|
|
10
|
22
|
11 public class SendChangeRequest extends CodeSegment {
|
|
12
|
24
|
13 private Receiver info = ids.create(CommandType.PEEK); // hostName
|
22
|
14 private Receiver info1 = ids.create(CommandType.PEEK); // connection list
|
|
15 private Receiver info2 = ids.create(CommandType.PEEK); // AliceVNCConfig
|
23
|
16 private Receiver info3 = ids.create(CommandType.TAKE); // request
|
22
|
17
|
|
18 public SendChangeRequest(){
|
|
19 info.setKey("host");
|
|
20 info1.setKey("_CLIST");
|
|
21 info2.setKey("AliceVNCConfig");
|
23
|
22 info3.setKey("Request");
|
22
|
23 }
|
|
24
|
15
|
25 @Override
|
|
26 public void run() {
|
22
|
27 AliceVNCConfig config = info2.asClass(AliceVNCConfig.class);
|
|
28 String hostname = info.asString();
|
|
29
|
|
30 @SuppressWarnings("unchecked")
|
|
31 List<String> clist = info1.asClass(List.class);
|
|
32
|
24
|
33 ChangeRequestMessage mes = new ChangeRequestMessage(MessageType.ChangeRequest);
|
27
|
34 mes.allowChange = config.getAllowChange();
|
25
|
35 mes.route = new ArrayList<String>();
|
24
|
36 mes.name = hostname;
|
22
|
37
|
|
38 String address = "local";
|
|
39 if (clist.contains("parent")){ // this node is not root. compare node0 is better?
|
|
40 address = "parent";
|
15
|
41 }
|
22
|
42
|
|
43 ods.put(address, "changeRequest", mes);
|
23
|
44 new SendChangeRequest();
|
15
|
45 }
|
|
46
|
|
47 }
|