Mercurial > hg > Members > riono > TreeVNC_ja_comment
annotate Todo.txt @ 530:18c461305cc3
tweak TreeVNC.iml
author | anatofuz |
---|---|
date | Fri, 03 May 2019 20:00:32 +0900 |
parents | 9de5137e1598 |
children | 13d3c4341d14 |
rev | line source |
---|---|
522 | 1 Fri Feb 22 19:12:24 JST 2019 |
2 マルチキャストとストリームを混在させる | |
3 WhereToConnectMessage にマルチキャストのフラグを用意する | |
4 ストリームなノードはツリーのルートの近い方にまとめる | |
5 あるところより下はマルチキャストしかいないのでフレームアップデートを流さない | |
6 親ノードに接続する際に自分がマルチキャストかどうかを申告する | |
7 | |
529 | 8 RectangleHeaderを書き換える部分を作成する |
9 | |
506 | 10 Tue Feb 19 15:01:43 JST 2019 |
11 マルチキャスト用のパラメーター | |
12 Packet size | |
13 Multicast Address | |
14 IPv6, IPv4 | |
15 Command line | |
16 | |
514 | 17 複数のルートがあるときにマルチキャストポートを複数にする |
18 FindRootReply でそのポートを教える | |
506 | 19 |
487 | 20 Wed Jan 30 18:55:55 JST 2019 |
21 directconnection 時に nodeid を正しく設定する必要がある | |
22 | |
478 | 23 Wed Nov 28 18:45:41 JST 2018 |
24 | |
483 | 25 VNCサーバー側が死んだ時にTreeVNCが暴走する Done |
484 | 26 authenticationのポップアップがrootで上がってしまう Done |
478 | 27 SERVER_CHANGE_REQUESTでリクエスト側の画面が消えないことがある |
28 ディスプレイモードで立ち上げた時にも画面が開いた方が良い | |
29 consolelogをlog4jに切り替える | |
30 | |
31 Multicast mode | |
32 RFB.readsenddataでmulticastqueueにブロッキングしたデータを挿入する | |
33 multicastqueueをmulticastport に出力するスレッドを作成する | |
34 framebufferをcopyしないでブロッキングするメソッドを作成する | |
35 ReceiveData threadをmulticastportに対して走らせる | |
36 multicastするネットワークインターフェースを選択するUIを作成する | |
37 | |
38 | |
431 | 39 Wed June 8 15:35 JST 2016 kono |
40 | |
41 Multi screen でfitScreen buttonは左では動く | |
42 右ではoriginがずれる | |
43 | |
44 fitScreenをclient側で自動的に実行する | |
45 multi screenのoriginを考慮してfitScreenする | |
46 | |
324 | 47 Wed Jan 28 15:35 JST 2015 |
48 | |
49 < 現状の問題点 > | |
50 | |
51 安定性の向上 | |
52 | |
53 無線時、切り替えが遅い | |
54 | |
55 拡大・縮小が遅い done! | |
56 RenderingHint に set する値を、Quality から Speed にする done! | |
57 これを TreeVNC の setting から変更出来るようにする | |
58 | |
59 FitButton の UI の確認 done! | |
60 -d の場合は常に画面に Fit するように設定 done! | |
61 | |
62 テストの方法 | |
63 | |
64 linux、win で動くかどうか | |
65 VMWare で確認できる | |
66 | |
67 catch節で正しい処理ができているか全てチェックする | |
68 | |
69 TreeVNC起動中にPCを閉じると暴走する (再現しないから後回し) | |
70 | |
71 log in の方法 | |
72 log in 出来るようにする | |
73 log in できなかった場合、メッセージを出す | |
74 | |
75 複数のネットワークインタフェースがある場合、繋がらないことがある | |
76 | |
77 途中でネットワークインタフェースを立ち上げるとそれを検知する | |
78 | |
79 log の情報不足の解決 | |
80 | |
81 | |
82 < 拡張機能 > | |
83 | |
84 ルータ越え | |
85 | |
86 ルータ越えの際の UI の確認 | |
87 | |
88 音声共有 | |
89 | |
90 音声共有の際の UI の確認 | |
91 | |
92 | |
93 | |
94 | |
95 | |
218 | 96 Fri Jul 4 19:39:28 JST 2014 |
97 | |
98 ServerChangeRequest を sub tree 側が、自分向けに換えて、upper tree に送ると、 | |
99 中間のtree root経由で、VNC server にリンクが届くので sub tree 側からの画面配信が可能になる。 | |
100 ただし、木に loop ができるので、ServerChangeRequest を途中で停める必要がある。 | |
101 真の root で停めるという手もあるが、自分の知ってるrootから来たものは上に送らないで良いか? | |
102 | |
103 r | |
104 / \ | |
105 n1 n2 | |
106 /\ /\ | |
107 n2 n3 n4 r' = n5 | |
108 /\ | |
109 n1' n2' | |
110 | |
111 n2' send SCR n2' | |
112 Connect VNC r' -> n2' | |
113 r' send SCR r' | |
114 Connect VNC r -> r' | |
115 | |
116 n2' | |
117 / | |
118 r' -> n2' | |
119 / \ | |
120 r n1' | |
121 / \ | |
122 n1 n2 | |
123 /\ / | |
124 n2 n3 n4 | |
125 | |
126 r' send SCR r' to n2', n2' do not send SCR to r' becase r' is root of n2' | |
127 | |
128 こうすれば、FrameBufferUpdate を SeverMessage として送る必要がなくなる。 | |
129 | |
215
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
130 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
|
131 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
132 interface毎にtreemanagerをつくるので十分。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
133 subTreeを接続するときにはtreeのnodeにroot modeで直接つなぎにいく。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
134 これで自動的にlocalのroot managerになる。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
135 元のtreeとは干渉しない。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
136 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
137 sub treeの画面に切り替えることは現状できない。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
138 切り替えるためには、sub tree側から元のtreeにRfbUpdateを持ち上げなければならない。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
139 保留。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
140 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
141 同じnetworkにいるかどうかはwheretoconnectに変わったnetworkで接続しにきたときのみ対処する。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
142 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
143 duplicated rootは、subtreeを自分でつなげることにすれば必要ない。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
144 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
145 殺しきれていないThreadがある。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
146 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
147 動かしたままサスペンドすると暴走する。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
148 サスペンドしたマシンに |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
149 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
150 shareボタンを禁止するrootのオプションを、パネルから設定出来るように。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
151 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
152 shareする画面の大きさをHDサイズに限定するのをdefaultにする。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
153 オプションには定義してあるけれど正しく機能していない。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
154 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
155 checkdelayの機能を。 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
156 木をさかのぼるプロトコル |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
157 上から投げて、下からdelayの時間をあげていく |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
158 途中のnodeですべてのtreeを待ってから |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
159 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
160 subtreeからのshareの問題。 |
216 | 161 |
162 無線のみで-dをあげると、client側から接続できない。 | |
215
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
163 |
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
164 |
209 | 165 Wed Jul 2 18:55:48 JST 2014 |
166 | |
167 TreeRFBProtoのisTreeManagerはnetwork毎に変わる。 | |
168 | |
169 clientが立ち上がったときにinterface address毎にTreeManagerを作成する。 | |
170 findRootして、既にTreeManagerがいたら、TreeManagerのisTreeManagerフラグを落とす。 | |
171 TreeManagerフラグがたっているinterfaceにたいしてはinterface rootとして振る舞う。 | |
172 findRootに答える。 | |
173 newClientとwhereToConnect、lostParentに応答する。 | |
174 真のrootはTreeRfb.isRootで判断する。 | |
175 | |
176 newClientが来たら、newClientのnetwork addressをみて、同じネットワークかどうかを判断する。 | |
177 同じネットワークにいる場合は、tree nodeとして扱う。 | |
178 ネットワークが異なる場合は、順々にtree nodeの下につける。 | |
179 | |
180 FindRootへの応答は、自分がTreeManagerである場合。 | |
181 応答を願ったnetwork addressからTreeManagerを検索して、それが合致し、TreeManagerであった場合に応答する。 | |
182 | |
183 | |
196 | 184 Fri Jun 27 15:19:39 JST 2014 |
198 | 185 |
205
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
186 拡大縮小ボタンのバグを取る。Done! |
196 | 187 |
209 | 188 Multi-Network-Treeの作成 done! |
189 socketからNetMaskを検出 done! | |
196 | 190 NetworkごとにTreeManagerを作成 |
191 複数のNetworkをもつNodeでは新しいNewtworkにTreeManagerを作成 | |
192 FindRootにはTreeMangerが応答する | |
193 下位のNodeのChangeVnCServerはそのTreeManagerが処理する | |
194 上位にHostameがからのChangerVnCserverを投げる | |
205
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
195 UpdateRectanleを上位のNetworkに投げる |
196 | 196 RootではUpdateRectangleを送り返す |
197 | |
205
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
198 myRfbProtoのselectPort()でnetworkinterfaceを検出する |
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
199 myRfbProtoのvncConnected()でvnc port の interface と Network を検出する |
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
200 |
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
201 自分が、そのnetworkのrootになる条件は? |
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
202 |
196 | 203 treeManagerをnetworkのhashmapで持つ。 |
204 setTreeManagerにnetworkの引数を追加する | |
205 | |
206 findRootで重複したrootを見つけたときに、 | |
207 一番小さいアドレスだけをrootにする。 | |
208 それ以外には、duplicated rootを送る。 | |
197 | 209 この際、duplicated rootを送られたrootは生かしておくが、 |
210 find rootへの応答はやめる。 | |
211 lostParentがきたら、find rootへの応答を再開する。 | |
212 この際、生かしておくduplicated rootは二つに限る。 | |
196 | 213 |
214 findRootReplyにはVNCServerのhostとportを含める。 | |
215 両方共nullだった場合は両方別のものとして表示する。 | |
216 異なるVNCServerはduplicate扱いしない。 | |
217 | |
218 duplicate root を受け取ったrootは、 | |
219 rootであることをやめて、自分の子供にrequestWhereToConnectを送信する。 | |
220 | |
221 requestWhereToConnectを受け取ったnodeは | |
222 whererToConnectを再度送信する。 | |
197 | 223 |
224 中間rootが死んだときには | |
225 下位のnodeはduplicated rootにつなげ直す。 | |
226 もしduplicatedListになかったら、あきらめる。 | |
227 | |
205
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
228 TreeManager は interface 別に作る Done! |
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
229 Network address が LAN 外なら、その下に node は作らない。( そちらで勝手に作るのはあり ) |
614db20d8fab
try to separate Network management
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
198
diff
changeset
|
230 |
196 | 231 |
193 | 232 Thu Jun 25 20:55:00 JST 2014 |
233 | |
215
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
234 share screenした際に、rootのviewerが消えない。 done! |
193 | 235 殺しきれていないThreadがある。 |
236 | |
237 | |
165 | 238 Thu Jun 19 08:12:02 JST 2014 |
166 | 239 |
169 | 240 Share Button を押した際に、JFrameのTitleを更新する。 Done |
166 | 241 SwingViewerWindow.javaのsetRemoteDesktopName メソッドを呼べば解決するはず。 |
242 | |
167 | 243 サーバが切り替わった際、画面のサイズ等の情報を送信する。(INIT_DATA) Done |
166 | 244 |
215
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
245 -dオプションでviewerを別にあげるのをやめる。done |
166 | 246 2つめのviewerの表示が滞るのをデバッグする |
247 shareボタンを禁止するrootのオプションを、パネルから設定出来るように。 | |
215
1badb2ce838f
add poll timeout root-command-loop, client don"t send framebufferupdate.
oc
parents:
209
diff
changeset
|
248 shareしたTreeVNCのパネルをinvisibleにする。 done |
166 | 249 shareする画面の大きさをHDサイズに限定するのをdefaultにする。 |
250 fullサイズを転送するオプションに。 | |
169 | 251 checkdelayの機能を。 |
166 | 252 |
165 | 253 |
153 | 254 Fri Jun 13 17:29:02 JST 2014 |
255 | |
256 AcceptThreadをMultiThread化する。(deadlockを防ぐため) | |
257 TreeNodeが死んだときに、最後のNodeをそこに置き換える。 | |
156 | 258 clientをつなげたときにscreen sharingするバグを直す。 |
259 無線LAN等の複数のネットワークを使えるようにする。 | |
260 無線LAN同士でtreeを構成しないようにパターンマッチをする。 | |
153 | 261 |
133 | 262 Sat Jun 7 11:47:56 JST 2014 |
123 | 263 |
264 Multicast で root を探す (FIND_ROOT) | |
265 その時に、自分の proxy port/host を付けておく | |
266 root は、それを client address/port として覚えておく (clients) | |
267 root は、そこに接続に来て、「自分のproxy port」を返す。(FIND_ROOT_REPLY) | |
268 これを check box に登録する | |
269 client は、それを選択して、root の proxy port に接続に行く (WHERE_TO_CONNECT) | |
270 そこから、root は、どこに接続に行くかを教えてくれる (CONNECT_TO) | |
271 今度は、そこにclientとして接続する (VERSION_MESSAGE ) | |
272 | |
133 | 273 FIND_ROOT (client multicast ) : int port; String hostname (client's address) |
274 | |
123 | 275 proxy port への接続では、client は自分から書かずに server からの version message を待つ |
276 普通のVNCは cliet からは VERSION_MESSAGE が行くが、Tree VNC では、 | |
277 | |
133 | 278 FIND_ROOT_REPLY (root to client proxy port) : int port; String hostname (root's address) |
279 WHERE_TO_CONNECT (clinet to root proxy port) : int port; String hostname (client's address) | |
280 CONNECT_TO (root to client ) : int port; String parentAddress (parent's address) | |
281 CONNECT_TO_AS_LEADER (root to client ) : int port; String parentAddress (parent's address) | |
123 | 282 |
283 が来ることになる。 | |
284 | |
285 切断時は、子供のleaderが root のproxy port に聞きに行く | |
286 | |
133 | 287 LOST_PARENT (client to root) : int port; String hostname |
123 | 288 |
289 root は、接続変更が必要な node の proxy に CONNECT_TO を送る (木経由では送れない。切断されているので) | |
290 | |
291 最終的な切断時では、 LOST_PARENT が大量に出てしまうはず。なので、CONNECT_TO は連続しては送らない。 | |
292 | |
133 | 293 reportLastNode は CONNECT_TO で良い。(10001 port) |
294 lostNodeConnection でも CONNECT_TO を使う | |
295 | |
296 LOST_PARENT と PARENT_NOT_FOUND の違いはなんだ? LOST_PARENT は leader が出すようだけど。 | |
297 | |
298 CONNECT_TO で parentNum とか treeNum を送る必要はない。root 内部で接続アドレスから判断する。 | |
299 なので、LOST_PARENT は hostname と port だけでよい。 | |
300 | |
109 | 301 Fri May 23 19:32:24 JST 2014 |
114 | 302 |
303 checkdelay を再実装する | |
304 | |
305 reconnect message が port 10001 を使っているが、これでは複数clientをホストで動かした時に動かない。 | |
306 どのportを使うかをrootに教える必要がある。 | |
109 | 307 |
123 | 308 9999も使われているようだ。 |
309 | |
310 普通にclientに接続に行けば、version handshake からスタートするはず。そこに、reconnection プロトコルを | |
311 挟める。MyRfbProto.readVersionMsg()。 | |
312 | |
313 Recconection は | |
314 root は AcceptClient | |
315 client は EchoClient | |
316 で行われている(らしい)。まず、この名前をまともなものにする。 | |
317 | |
318 reconnection は木の最後のノードを穴の空いたところに接続することで行われる。これは、逐次で行う必要がある。 | |
319 最後には、ほとんどは一斉に切断されるので、そこで破綻しないように注意する。 | |
320 | |
321 root が client のノードとportを持っているかどうかが重要だが。 | |
322 | |
109 | 323 |
100 | 324 Thu May 22 21:20:39 JST 2014 |
325 | |
326 1) zlibの同期が外れてる。 | |
105 | 327 VncProxyService.javaのinhelitClients の中で |
328 resetDecoderを呼び出せばいいが.... | |
329 2) DesktopSize ではなく、同じプロトコルで initData を送る方が良い。 | |
330 2) initData の中の名前を見て、自分だったら、shareしたclientのscreenをhideする。 | |
331 | |
100 | 332 |
96 | 333 Wed May 22 16:14:25 JST 2014 |
334 | |
100 | 335 1) 10001, 10002 における固定Portをなくす |
336 2) 木を上に登る通信 | |
337 3) ClientをCloseしないでresizeする | |
338 | |
339 Update rectangle で desktop size を変更可能 | |
101 | 340 このままで、pixel formatが変更されない |
341 なのでserverInit をもう一度送るのがよいのではないか | |
96 | 342 |
100 | 343 4) display modeでClient view(proxy + view)をあげる |
96 | 344 |
22 | 345 Wed Aug 29 23:32:36 JST 2012 |
346 | |
347 ReceiverTask の framebufferUpdateMessage を、TreeTask に再現しないとだめ。 | |
348 | |
20
98519d16a8c3
getInitData from ProtocolContext
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
349 Wed Aug 29 22:27:25 JST 2012 |
98519d16a8c3
getInitData from ProtocolContext
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
350 |
98519d16a8c3
getInitData from ProtocolContext
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
351 MyRfbProxy の os が初期化されていない (削除する方が良い) |
98519d16a8c3
getInitData from ProtocolContext
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
352 |
98519d16a8c3
getInitData from ProtocolContext
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
353 initData が null ( 設定された時に、設定するべき) |
98519d16a8c3
getInitData from ProtocolContext
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
354 |
98519d16a8c3
getInitData from ProtocolContext
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
355 |