Mercurial > hg > Members > riono > TreeVNC_ja_comment
annotate Todo.txt @ 227:2cb2279ca95c
send checkdelay time.
author | Miwa Oshiro <e115747@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 06 Oct 2014 10:57:55 +0900 |
parents | 3d7107b14595 |
children | 1b1270adc4ba |
rev | line source |
---|---|
218 | 1 Fri Jul 4 19:39:28 JST 2014 |
2 | |
3 ServerChangeRequest を sub tree 側が、自分向けに換えて、upper tree に送ると、 | |
4 中間のtree root経由で、VNC server にリンクが届くので sub tree 側からの画面配信が可能になる。 | |
5 ただし、木に loop ができるので、ServerChangeRequest を途中で停める必要がある。 | |
6 真の root で停めるという手もあるが、自分の知ってるrootから来たものは上に送らないで良いか? | |
7 | |
8 r | |
9 / \ | |
10 n1 n2 | |
11 /\ /\ | |
12 n2 n3 n4 r' = n5 | |
13 /\ | |
14 n1' n2' | |
15 | |
16 n2' send SCR n2' | |
17 Connect VNC r' -> n2' | |
18 r' send SCR r' | |
19 Connect VNC r -> r' | |
20 | |
21 n2' | |
22 / | |
23 r' -> n2' | |
24 / \ | |
25 r n1' | |
26 / \ | |
27 n1 n2 | |
28 /\ / | |
29 n2 n3 n4 | |
30 | |
31 r' send SCR r' to n2', n2' do not send SCR to r' becase r' is root of n2' | |
32 | |
33 こうすれば、FrameBufferUpdate を SeverMessage として送る必要がなくなる。 | |
34 | |
215
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
35 Thu Jul 3 18:09:37 JST 2014 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
36 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
37 interface毎にtreemanagerをつくるので十分。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
38 subTreeを接続するときにはtreeのnodeにroot modeで直接つなぎにいく。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
39 これで自動的にlocalのroot managerになる。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
40 元のtreeとは干渉しない。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
41 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
42 sub treeの画面に切り替えることは現状できない。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
43 切り替えるためには、sub tree側から元のtreeにRfbUpdateを持ち上げなければならない。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
44 保留。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
45 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
46 同じnetworkにいるかどうかはwheretoconnectに変わったnetworkで接続しにきたときのみ対処する。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
47 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
48 duplicated rootは、subtreeを自分でつなげることにすれば必要ない。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
49 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
50 殺しきれていないThreadがある。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
51 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
52 動かしたままサスペンドすると暴走する。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
53 サスペンドしたマシンに |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
54 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
55 shareボタンを禁止するrootのオプションを、パネルから設定出来るように。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
56 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
57 shareする画面の大きさをHDサイズに限定するのをdefaultにする。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
58 オプションには定義してあるけれど正しく機能していない。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
59 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
60 checkdelayの機能を。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
61 木をさかのぼるプロトコル |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
62 上から投げて、下からdelayの時間をあげていく |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
63 途中のnodeですべてのtreeを待ってから |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
64 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
65 subtreeからのshareの問題。 |
216 | 66 |
67 無線のみで-dをあげると、client側から接続できない。 | |
215
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
68 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
69 |
209 | 70 Wed Jul 2 18:55:48 JST 2014 |
71 | |
72 TreeRFBProtoのisTreeManagerはnetwork毎に変わる。 | |
73 | |
74 clientが立ち上がったときにinterface address毎にTreeManagerを作成する。 | |
75 findRootして、既にTreeManagerがいたら、TreeManagerのisTreeManagerフラグを落とす。 | |
76 TreeManagerフラグがたっているinterfaceにたいしてはinterface rootとして振る舞う。 | |
77 findRootに答える。 | |
78 newClientとwhereToConnect、lostParentに応答する。 | |
79 真のrootはTreeRfb.isRootで判断する。 | |
80 | |
81 newClientが来たら、newClientのnetwork addressをみて、同じネットワークかどうかを判断する。 | |
82 同じネットワークにいる場合は、tree nodeとして扱う。 | |
83 ネットワークが異なる場合は、順々にtree nodeの下につける。 | |
84 | |
85 FindRootへの応答は、自分がTreeManagerである場合。 | |
86 応答を願ったnetwork addressからTreeManagerを検索して、それが合致し、TreeManagerであった場合に応答する。 | |
87 | |
88 | |
196 | 89 Fri Jun 27 15:19:39 JST 2014 |
198 | 90 |
205
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
91 拡大縮小ボタンのバグを取る。Done! |
196 | 92 |
209 | 93 Multi-Network-Treeの作成 done! |
94 socketからNetMaskを検出 done! | |
196 | 95 NetworkごとにTreeManagerを作成 |
96 複数のNetworkをもつNodeでは新しいNewtworkにTreeManagerを作成 | |
97 FindRootにはTreeMangerが応答する | |
98 下位のNodeのChangeVnCServerはそのTreeManagerが処理する | |
99 上位にHostameがからのChangerVnCserverを投げる | |
205
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
100 UpdateRectanleを上位のNetworkに投げる |
196 | 101 RootではUpdateRectangleを送り返す |
102 | |
205
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
103 myRfbProtoのselectPort()でnetworkinterfaceを検出する |
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
104 myRfbProtoのvncConnected()でvnc port の interface と Network を検出する |
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
105 |
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
106 自分が、そのnetworkのrootになる条件は? |
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
107 |
196 | 108 treeManagerをnetworkのhashmapで持つ。 |
109 setTreeManagerにnetworkの引数を追加する | |
110 | |
111 findRootで重複したrootを見つけたときに、 | |
112 一番小さいアドレスだけをrootにする。 | |
113 それ以外には、duplicated rootを送る。 | |
197 | 114 この際、duplicated rootを送られたrootは生かしておくが、 |
115 find rootへの応答はやめる。 | |
116 lostParentがきたら、find rootへの応答を再開する。 | |
117 この際、生かしておくduplicated rootは二つに限る。 | |
196 | 118 |
119 findRootReplyにはVNCServerのhostとportを含める。 | |
120 両方共nullだった場合は両方別のものとして表示する。 | |
121 異なるVNCServerはduplicate扱いしない。 | |
122 | |
123 duplicate root を受け取ったrootは、 | |
124 rootであることをやめて、自分の子供にrequestWhereToConnectを送信する。 | |
125 | |
126 requestWhereToConnectを受け取ったnodeは | |
127 whererToConnectを再度送信する。 | |
197 | 128 |
129 中間rootが死んだときには | |
130 下位のnodeはduplicated rootにつなげ直す。 | |
131 もしduplicatedListになかったら、あきらめる。 | |
132 | |
205
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
133 TreeManager は interface 別に作る Done! |
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
134 Network address が LAN 外なら、その下に node は作らない。( そちらで勝手に作るのはあり ) |
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
135 |
196 | 136 |
193 | 137 Thu Jun 25 20:55:00 JST 2014 |
138 | |
215
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
139 share screenした際に、rootのviewerが消えない。 done! |
193 | 140 殺しきれていないThreadがある。 |
141 | |
142 | |
165 | 143 Thu Jun 19 08:12:02 JST 2014 |
166 | 144 |
169 | 145 Share Button を押した際に、JFrameのTitleを更新する。 Done |
166 | 146 SwingViewerWindow.javaのsetRemoteDesktopName メソッドを呼べば解決するはず。 |
147 | |
167 | 148 サーバが切り替わった際、画面のサイズ等の情報を送信する。(INIT_DATA) Done |
166 | 149 |
215
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
150 -dオプションでviewerを別にあげるのをやめる。done |
166 | 151 2つめのviewerの表示が滞るのをデバッグする |
152 shareボタンを禁止するrootのオプションを、パネルから設定出来るように。 | |
215
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
153 shareしたTreeVNCのパネルをinvisibleにする。 done |
166 | 154 shareする画面の大きさをHDサイズに限定するのをdefaultにする。 |
155 fullサイズを転送するオプションに。 | |
169 | 156 checkdelayの機能を。 |
166 | 157 |
165 | 158 |
153 | 159 Fri Jun 13 17:29:02 JST 2014 |
160 | |
161 AcceptThreadをMultiThread化する。(deadlockを防ぐため) | |
162 TreeNodeが死んだときに、最後のNodeをそこに置き換える。 | |
156 | 163 clientをつなげたときにscreen sharingするバグを直す。 |
164 無線LAN等の複数のネットワークを使えるようにする。 | |
165 無線LAN同士でtreeを構成しないようにパターンマッチをする。 | |
153 | 166 |
133 | 167 Sat Jun 7 11:47:56 JST 2014 |
123 | 168 |
169 Multicast で root を探す (FIND_ROOT) | |
170 その時に、自分の proxy port/host を付けておく | |
171 root は、それを client address/port として覚えておく (clients) | |
172 root は、そこに接続に来て、「自分のproxy port」を返す。(FIND_ROOT_REPLY) | |
173 これを check box に登録する | |
174 client は、それを選択して、root の proxy port に接続に行く (WHERE_TO_CONNECT) | |
175 そこから、root は、どこに接続に行くかを教えてくれる (CONNECT_TO) | |
176 今度は、そこにclientとして接続する (VERSION_MESSAGE ) | |
177 | |
133 | 178 FIND_ROOT (client multicast ) : int port; String hostname (client's address) |
179 | |
123 | 180 proxy port への接続では、client は自分から書かずに server からの version message を待つ |
181 普通のVNCは cliet からは VERSION_MESSAGE が行くが、Tree VNC では、 | |
182 | |
133 | 183 FIND_ROOT_REPLY (root to client proxy port) : int port; String hostname (root's address) |
184 WHERE_TO_CONNECT (clinet to root proxy port) : int port; String hostname (client's address) | |
185 CONNECT_TO (root to client ) : int port; String parentAddress (parent's address) | |
186 CONNECT_TO_AS_LEADER (root to client ) : int port; String parentAddress (parent's address) | |
123 | 187 |
188 が来ることになる。 | |
189 | |
190 切断時は、子供のleaderが root のproxy port に聞きに行く | |
191 | |
133 | 192 LOST_PARENT (client to root) : int port; String hostname |
123 | 193 |
194 root は、接続変更が必要な node の proxy に CONNECT_TO を送る (木経由では送れない。切断されているので) | |
195 | |
196 最終的な切断時では、 LOST_PARENT が大量に出てしまうはず。なので、CONNECT_TO は連続しては送らない。 | |
197 | |
133 | 198 reportLastNode は CONNECT_TO で良い。(10001 port) |
199 lostNodeConnection でも CONNECT_TO を使う | |
200 | |
201 LOST_PARENT と PARENT_NOT_FOUND の違いはなんだ? LOST_PARENT は leader が出すようだけど。 | |
202 | |
203 CONNECT_TO で parentNum とか treeNum を送る必要はない。root 内部で接続アドレスから判断する。 | |
204 なので、LOST_PARENT は hostname と port だけでよい。 | |
205 | |
109 | 206 Fri May 23 19:32:24 JST 2014 |
114 | 207 |
208 checkdelay を再実装する | |
209 | |
210 reconnect message が port 10001 を使っているが、これでは複数clientをホストで動かした時に動かない。 | |
211 どのportを使うかをrootに教える必要がある。 | |
109 | 212 |
123 | 213 9999も使われているようだ。 |
214 | |
215 普通にclientに接続に行けば、version handshake からスタートするはず。そこに、reconnection プロトコルを | |
216 挟める。MyRfbProto.readVersionMsg()。 | |
217 | |
218 Recconection は | |
219 root は AcceptClient | |
220 client は EchoClient | |
221 で行われている(らしい)。まず、この名前をまともなものにする。 | |
222 | |
223 reconnection は木の最後のノードを穴の空いたところに接続することで行われる。これは、逐次で行う必要がある。 | |
224 最後には、ほとんどは一斉に切断されるので、そこで破綻しないように注意する。 | |
225 | |
226 root が client のノードとportを持っているかどうかが重要だが。 | |
227 | |
109 | 228 |
100 | 229 Thu May 22 21:20:39 JST 2014 |
230 | |
231 1) zlibの同期が外れてる。 | |
105 | 232 VncProxyService.javaのinhelitClients の中で |
233 resetDecoderを呼び出せばいいが.... | |
234 2) DesktopSize ではなく、同じプロトコルで initData を送る方が良い。 | |
235 2) initData の中の名前を見て、自分だったら、shareしたclientのscreenをhideする。 | |
236 | |
100 | 237 |
96 | 238 Wed May 22 16:14:25 JST 2014 |
239 | |
100 | 240 1) 10001, 10002 における固定Portをなくす |
241 2) 木を上に登る通信 | |
242 3) ClientをCloseしないでresizeする | |
243 | |
244 Update rectangle で desktop size を変更可能 | |
101 | 245 このままで、pixel formatが変更されない |
246 なのでserverInit をもう一度送るのがよいのではないか | |
96 | 247 |
100 | 248 4) display modeでClient view(proxy + view)をあげる |
96 | 249 |
22 | 250 Wed Aug 29 23:32:36 JST 2012 |
251 | |
252 ReceiverTask の framebufferUpdateMessage を、TreeTask に再現しないとだめ。 | |
253 | |
20
98519d16a8c3
getInitData from ProtocolContext
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
254 Wed Aug 29 22:27:25 JST 2012 |
98519d16a8c3
getInitData from ProtocolContext
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
255 |
98519d16a8c3
getInitData from ProtocolContext
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
256 MyRfbProxy の os が初期化されていない (削除する方が良い) |
98519d16a8c3
getInitData from ProtocolContext
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
257 |
98519d16a8c3
getInitData from ProtocolContext
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
258 initData が null ( 設定された時に、設定するべき) |
98519d16a8c3
getInitData from ProtocolContext
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
259 |
98519d16a8c3
getInitData from ProtocolContext
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
260 |