Sat Jun 7 11:47:56 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 ) FIND_ROOT (client multicast ) : int port; String hostname (client's address) proxy port への接続では、client は自分から書かずに server からの version message を待つ 普通のVNCは cliet からは VERSION_MESSAGE が行くが、Tree VNC では、 FIND_ROOT_REPLY (root to client proxy port) : int port; String hostname (root's address) WHERE_TO_CONNECT (clinet to root proxy port) : int port; String hostname (client's address) CONNECT_TO (root to client ) : int port; String parentAddress (parent's address) CONNECT_TO_AS_LEADER (root to client ) : int port; String parentAddress (parent's address) が来ることになる。 切断時は、子供のleaderが root のproxy port に聞きに行く LOST_PARENT (client to root) : int port; String hostname root は、接続変更が必要な node の proxy に CONNECT_TO を送る (木経由では送れない。切断されているので) 最終的な切断時では、 LOST_PARENT が大量に出てしまうはず。なので、CONNECT_TO は連続しては送らない。 reportLastNode は CONNECT_TO で良い。(10001 port) lostNodeConnection でも CONNECT_TO を使う LOST_PARENT と PARENT_NOT_FOUND の違いはなんだ? LOST_PARENT は leader が出すようだけど。 CONNECT_TO で parentNum とか treeNum を送る必要はない。root 内部で接続アドレスから判断する。 なので、LOST_PARENT は hostname と port だけでよい。 Fri May 23 19:32:24 JST 2014 checkdelay を再実装する 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 1) zlibの同期が外れてる。 VncProxyService.javaのinhelitClients の中で resetDecoderを呼び出せばいいが.... 2) DesktopSize ではなく、同じプロトコルで initData を送る方が良い。 2) initData の中の名前を見て、自分だったら、shareしたclientのscreenをhideする。 Wed May 22 16:14:25 JST 2014 1) 10001, 10002 における固定Portをなくす 2) 木を上に登る通信 3) ClientをCloseしないでresizeする Update rectangle で desktop size を変更可能 このままで、pixel formatが変更されない なのでserverInit をもう一度送るのがよいのではないか 4) display modeでClient view(proxy + view)をあげる Wed Aug 29 23:32:36 JST 2012 ReceiverTask の framebufferUpdateMessage を、TreeTask に再現しないとだめ。 Wed Aug 29 22:27:25 JST 2012 MyRfbProxy の os が初期化されていない (削除する方が良い) initData が null ( 設定された時に、設定するべき)