7
|
1 package jp.ac.u_ryukyu.alicevnc;
|
|
2
|
24
|
3 import java.util.ArrayList;
|
|
4
|
|
5 import jp.ac.u_ryukyu.alicevnc.ChangeRequestMessage.MessageType;
|
|
6
|
7
|
7 import com.glavsoft.viewer.Viewer;
|
|
8
|
|
9 import alice.codesegment.CodeSegment;
|
|
10 import alice.datasegment.CommandType;
|
|
11 import alice.datasegment.Receiver;
|
|
12
|
20
|
13 public class NegotiateVNCServer extends CodeSegment {
|
7
|
14 private Receiver info = ids.create(CommandType.PEEK);
|
20
|
15 private Receiver info1 = ids.create(CommandType.PEEK);
|
30
|
16 private Receiver info2 = ids.create(CommandType.TAKE);
|
|
17
|
7
|
18
|
20
|
19 public NegotiateVNCServer(){
|
|
20 info.setKey("host");
|
|
21 info1.setKey("AliceVNCConfig");
|
30
|
22 info2.setKey("vncRight");
|
7
|
23 }
|
22
|
24
|
20
|
25 @Override
|
7
|
26 public void run() {
|
22
|
27
|
20
|
28 AliceVNCConfig conf = info1.asClass(AliceVNCConfig.class);
|
|
29 String hostname = info.asString();
|
30
|
30 boolean vncRight = info2.asClass(boolean.class);
|
22
|
31
|
30
|
32 if (vncRight) {
|
20
|
33 // root node connect to vnc Server first time.
|
|
34 String[] args = {"localhost"};
|
22
|
35 // negotiate VNCServer by Viewer
|
20
|
36 Viewer.main(args);
|
24
|
37
|
|
38 // currentServer Info
|
|
39 ChangeRequestMessage currentServerInfo = new ChangeRequestMessage(MessageType.CurrentVNCInfo);
|
30
|
40 currentServerInfo.name = hostname;
|
27
|
41 currentServerInfo.allowChange = conf.getAllowChange();
|
24
|
42 ArrayList<String> list = new ArrayList<String>();
|
|
43 currentServerInfo.route = list;
|
|
44 ods.put("changeRequest", currentServerInfo);
|
20
|
45 new ReceiveServerInitMessage();
|
15
|
46 } else {
|
20
|
47 new ReceiveServerInitMessage("parent");
|
22
|
48 if (conf.getProxyFlag()){
|
|
49 new SendChangeRequest();
|
|
50
|
20
|
51 }
|
15
|
52 }
|
24
|
53
|
30
|
54
|
7
|
55 }
|
|
56
|
|
57 }
|