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