Mercurial > hg > RemoteEditor > Documents
diff Merger/remote_editor.ind @ 15:9e761988e372
*** empty log message ***
author | kono |
---|---|
date | Sun, 19 Oct 2008 22:53:47 +0900 |
parents | 70e4ee7d197d |
children | fcd3800b4d26 |
line wrap: on
line diff
--- a/Merger/remote_editor.ind Tue Oct 14 06:26:44 2008 +0900 +++ b/Merger/remote_editor.ind Sun Oct 19 22:53:47 2008 +0900 @@ -1,16 +1,37 @@ -title: Remote Editor Procotol ---Merge +--EditorとSession Manager の間の非同期Merge + +Merge はsesion manager側で行なわれるので、それと同時にeditor +側からの入力がある場合がある。start_merge,end_merge を流す +ので、editorは、それを使って入力をlock(できれば)した方が良い。 +editorからの割込みがあった場合は、もう一度やり直す。これは、 +local な処理。割り込まれた入力は、そのままsession ringに +流して良い。 + +<center><img src="reMerge.jpg"></center> + +editorからのcommandは、session ringを廻るが、editorには戻らない。 +その代わり、start_merge が出る。merge_command は、eid=-2が +ついているので、editorは、これを実行しsession managerに返す +必要がある。(これを見て、割り込みがあったかどうかを判断する) <center><img src="merge-sequence.jpg"></center> ---EditorとSession Manager の間の非同期Merge - -<center><img src="reMerge.jpg"></center> - --Sessionのquit +まず、quitを廻して、editorからの入力を止める。 +既に、入力されたcommandは、quitの前後にいる。 + <center><img src="terminate1.jpg"></center> + +quitが一周したら、quit2を流す。quit2を出す時には、 +editorが自分が出したcommandが一周するのを確認した +後になる。確認は、session managerが行なう。最初の +editorは、quit2を出した時には終了出来ず、quit2_ack +を待つ必要がある。その他は、quit2を出したら終了 +して良い。 + <center><img src="terminate2.jpg"></center> closeも同様だが、client editorは単に抜けるだけで良い。 @@ -18,10 +39,16 @@ --Session Manager の切断時の処理 +切断された時には、gatherを使って、自分がどのsession +を持っているかを判断する必要がある。gatherの後で、 +updateを行なう。 + <center><img src="disconnect.jpg"></center> --Session Manager の join +ループの検出を行なう必要がある。 + <center><img src="sm_join.jpg"></center> --Session Manager にまたがるsession