view Todo.txt @ 133:70cbec526039

connection handling
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 07 Jun 2014 12:54:44 +0900
parents 233e94a7b5ed
children
line wrap: on
line source

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 ( 設定された時に、設定するべき)