Mercurial > hg > Applications > AliceVNC
view src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveAliceVNCMessage.java @ 47:9354e8a1d03b
working AliceVNC
author | Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 19 Oct 2015 23:48:18 +0900 |
parents | aace9df1462e |
children | 57ca704f86a3 |
line wrap: on
line source
package jp.ac.u_ryukyu.alicevnc; import java.util.List; import jp.ac.u_ryukyu.alicevnc.AliceVNCMessage.MessageType; import alice.codesegment.CodeSegment; import alice.datasegment.CommandType; import alice.datasegment.Receiver; public class ReceiveAliceVNCMessage extends CodeSegment { private Receiver info = ids.create(CommandType.TAKE); private Receiver info1 = ids.create(CommandType.PEEK); // connection list public ReceiveAliceVNCMessage(CodeSegment cs) { this.aliceDaemon = cs.aliceDaemon; info.setKey("AliceVNCMessage", this); info1.setKey("_CLIST", this); } @Override public void run() { AliceVNCMessage order = info.asClass(AliceVNCMessage.class); @SuppressWarnings("unchecked") List<String> clist = info1.asClass(List.class); if (order.messageID == MessageType.ChangeRequest.getId()|| order.messageID == MessageType.CurrentVNCInfo.getId()) { if (clist.contains("parent")){ order.route.add(info.from); ods.put("parent", "AliceVNCMessage", order); new ReceiveAliceVNCMessage(this); } else { // this node is root. order.route.add(info.from); if (order.messageID == MessageType.CurrentVNCInfo.getId()) { ods.put("currentServer", order); new ReceiveAliceVNCMessage(this); } else { new CheckCurrentInfo(order, this); // check change Server flag. } } } else if (order.messageID == MessageType.StartNegotiate.getId()|| order.messageID == MessageType.StopProxy.getId()|| order.messageID == MessageType.DeniedRequest.getId()) { if (order.route.size() == 0) { // this node send ChangeVNCRequest if (order.messageID == MessageType.StartNegotiate.getId()){ // negotiate VNCServer by Viewer ods.put("vncRight", true); new NegotiateVNCServer(this); new ReceiveAliceVNCMessage(this); } else if(order.messageID == MessageType.StopProxy.getId()) { new StopProxy(); } else if (order.messageID == MessageType.DeniedRequest.getId()) { // pop up window or message } } else { String address = order.getNextAddress(); ods.put(address, "AliceVNCMessage", order); new ReceiveAliceVNCMessage(this); } } } }