# HG changeset patch # User Shinji KONO # Date 1401117175 -32400 # Node ID 233e94a7b5ed68493e6a94a2130b19c4db0788ab # Parent e2416a246c95fe0f096ece335a8fd39b70c0247e add comment diff -r e2416a246c95 -r 233e94a7b5ed Todo.txt --- a/Todo.txt Mon May 26 20:03:16 2014 +0900 +++ b/Todo.txt Tue May 27 00:12:55 2014 +0900 @@ -1,3 +1,31 @@ +Fri May 23 19:32:24 JST 2014 + + Multicast で root を探す (FIND_ROOT) + その時に、自分の proxy port/host を付けておく + root は、それを client address/port として覚えておく (clients) + root は、そこに接続に来て、「自分のproxy port」を返す。(FIND_ROOT_REPLY) + これを check box に登録する + client は、それを選択して、root の proxy port に接続に行く (WHERE_TO_CONNECT) + そこから、root は、どこに接続に行くかを教えてくれる (CONNECT_TO) + 今度は、そこにclientとして接続する (VERSION_MESSAGE ) + + proxy port への接続では、client は自分から書かずに server からの version message を待つ + 普通のVNCは cliet からは VERSION_MESSAGE が行くが、Tree VNC では、 + + FIND_ROOT_REPLY (root to client proxy port) + WHERE_TO_CONNECT (clinet to root proxy port) + CONNECT_TO (root to client ) + + が来ることになる。 + + 切断時は、子供のleaderが root のproxy port に聞きに行く + + LOST_PARENT (root to client ) + + root は、接続変更が必要な node の proxy に CONNECT_TO を送る (木経由では送れない。切断されているので) + + 最終的な切断時では、 LOST_PARENT が大量に出てしまうはず。なので、CONNECT_TO は連続しては送らない。 + Fri May 23 19:32:24 JST 2014 checkdelay を再実装する @@ -5,6 +33,21 @@ reconnect message が port 10001 を使っているが、これでは複数clientをホストで動かした時に動かない。 どのportを使うかをrootに教える必要がある。 + 9999も使われているようだ。 + + 普通にclientに接続に行けば、version handshake からスタートするはず。そこに、reconnection プロトコルを + 挟める。MyRfbProto.readVersionMsg()。 + + Recconection は + root は AcceptClient + client は EchoClient + で行われている(らしい)。まず、この名前をまともなものにする。 + + reconnection は木の最後のノードを穴の空いたところに接続することで行われる。これは、逐次で行う必要がある。 + 最後には、ほとんどは一斉に切断されるので、そこで破綻しないように注意する。 + + root が client のノードとportを持っているかどうかが重要だが。 + Thu May 22 21:20:39 JST 2014 diff -r e2416a246c95 -r 233e94a7b5ed src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java Mon May 26 20:03:16 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java Tue May 27 00:12:55 2014 +0900 @@ -44,7 +44,7 @@ private long counter = 0; // packet serial number private VncProxyService viewer = null; public ServerSocket servSock; - private boolean permitChangeScreen = false; + private boolean permitChangeScreen = true; private static final int INFLATE_BUFSIZE = 1024 * 100; private Inflater inflater = new Inflater(); diff -r e2416a246c95 -r 233e94a7b5ed src/main/java/jp/ac/u_ryukyu/treevnc/client/GetHostClient.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/GetHostClient.java Mon May 26 20:03:16 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/GetHostClient.java Tue May 27 00:12:55 2014 +0900 @@ -33,7 +33,6 @@ } public void createSocket() { - do { try { server = new ServerSocket(port); diff -r e2416a246c95 -r 233e94a7b5ed src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptClient.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptClient.java Mon May 26 20:03:16 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptClient.java Tue May 27 00:12:55 2014 +0900 @@ -29,8 +29,7 @@ if ("1".equals(line) || "3".equals(line)) { String treeNumber = is.readLine(); // reply to Parents lost node - checkWait(os, is, port, Integer.parseInt(treeNumber)); - + replyLeaderNode(os, is, port, Integer.parseInt(treeNumber)); } else if ("2".equals(line)) { // reply to not Found Parents replyNodeInformation(port); @@ -246,10 +245,6 @@ } - void checkWait(PrintStream os, BufferedReader is, String port, - int treeNum) throws InterruptedException, IOException { - replyLeaderNode(os, is, port, treeNum); - } public LinkedList getList() { return ls;