27
|
1 package jp.ac.u_ryukyu.alicevnc;
|
|
2
|
28
|
3 import jp.ac.u_ryukyu.alicevnc.ChangeRequestMessage.MessageType;
|
27
|
4 import alice.codesegment.CodeSegment;
|
|
5 import alice.datasegment.CommandType;
|
|
6 import alice.datasegment.Receiver;
|
|
7
|
|
8 public class CheckCurrentInfo extends CodeSegment {
|
|
9
|
|
10 private Receiver info = ids.create(CommandType.TAKE); // current Server Info
|
|
11 private ChangeRequestMessage order;
|
|
12
|
|
13 public CheckCurrentInfo(ChangeRequestMessage order){
|
|
14 info.setKey("currentServer");
|
|
15 this.order = order;
|
|
16 }
|
|
17
|
|
18 @Override
|
|
19 public void run() {
|
28
|
20 System.out.println("check");
|
27
|
21 ChangeRequestMessage current = info.asClass(ChangeRequestMessage.class);
|
|
22
|
|
23 if (current.allowChange) {
|
|
24 // send Stop message to current
|
28
|
25 current.messageID = MessageType.StopProxy.getId();
|
27
|
26 int last = current.route.size() - 1;
|
|
27 String address = current.route.get(last);
|
|
28 current.route.remove(last);
|
|
29 ods.put(address, "changeRequest", current);
|
|
30
|
|
31 // update current server info
|
|
32 ods.update("currentServer", order);
|
|
33 } else {
|
|
34 // not allow to change
|
|
35 int last = order.route.size() - 1;
|
|
36 String address = order.route.get(last);
|
|
37 order.route.remove(last);
|
|
38 ods.put(address, "changeRequest", order);
|
|
39
|
|
40 // update current server info
|
|
41 ods.update("currentServer", current);
|
|
42 }
|
|
43 new ReceiveChangeRequest();
|
|
44 }
|
|
45
|
|
46 }
|