annotate Merger/remote_editor.ind @ 15:9e761988e372

*** empty log message ***
author kono
date Sun, 19 Oct 2008 22:53:47 +0900
parents 70e4ee7d197d
children fcd3800b4d26
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
1 -title: Remote Editor Procotol
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
2
15
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
3 --EditorとSession Manager の間の非同期Merge
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
4
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
5 Merge はsesion manager側で行なわれるので、それと同時にeditor
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
6 側からの入力がある場合がある。start_merge,end_merge を流す
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
7 ので、editorは、それを使って入力をlock(できれば)した方が良い。
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
8 editorからの割込みがあった場合は、もう一度やり直す。これは、
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
9 local な処理。割り込まれた入力は、そのままsession ringに
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
10 流して良い。
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
11
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
12 <center><img src="reMerge.jpg"></center>
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
13
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
14 editorからのcommandは、session ringを廻るが、editorには戻らない。
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
15 その代わり、start_merge が出る。merge_command は、eid=-2が
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
16 ついているので、editorは、これを実行しsession managerに返す
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
17 必要がある。(これを見て、割り込みがあったかどうかを判断する)
14
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
18
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
19 <center><img src="merge-sequence.jpg"></center>
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
20
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
21 --Sessionのquit
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
22
15
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
23 まず、quitを廻して、editorからの入力を止める。
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
24 既に、入力されたcommandは、quitの前後にいる。
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
25
14
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
26 <center><img src="terminate1.jpg"></center>
15
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
27
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
28 quitが一周したら、quit2を流す。quit2を出す時には、
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
29 editorが自分が出したcommandが一周するのを確認した
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
30 後になる。確認は、session managerが行なう。最初の
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
31 editorは、quit2を出した時には終了出来ず、quit2_ack
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
32 を待つ必要がある。その他は、quit2を出したら終了
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
33 して良い。
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
34
14
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
35 <center><img src="terminate2.jpg"></center>
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
36
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
37 closeも同様だが、client editorは単に抜けるだけで良い。
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
38 master editorが抜ける時には、quitを行なう。
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
39
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
40 --Session Manager の切断時の処理
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
41
15
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
42 切断された時には、gatherを使って、自分がどのsession
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
43 を持っているかを判断する必要がある。gatherの後で、
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
44 updateを行なう。
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
45
14
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
46 <center><img src="disconnect.jpg"></center>
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
47
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
48 --Session Manager の join
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
49
15
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
50 ループの検出を行なう必要がある。
9e761988e372 *** empty log message ***
kono
parents: 14
diff changeset
51
14
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
52 <center><img src="sm_join.jpg"></center>
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
53
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
54 --Session Manager にまたがるsession
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
55
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
56 <center><img src="inter-sm-session.jpg"></center>
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
57
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
58 --Session Manager にまたがる join/put
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
59
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
60 <center><img src="inter-sm-join.jpg"></center>
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
61
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
62 --Session Manager にまたがる select
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
63
70e4ee7d197d *** empty log message ***
kono
parents:
diff changeset
64 <center><img src="inter-sm-select.jpg"></center>