changeset 123:233e94a7b5ed

add comment
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 27 May 2014 00:12:55 +0900
parents e2416a246c95
children 214d4f206431
files Todo.txt src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java src/main/java/jp/ac/u_ryukyu/treevnc/client/GetHostClient.java src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptClient.java
diffstat 4 files changed, 45 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- 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
 
--- 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();
--- 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);
--- 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<String> getList() {
 		return ls;