Mercurial > hg > RemoteEditor > Documents
view Merger/remote_editor.html @ 16:542e85e0d142
*** empty log message ***
author | kono |
---|---|
date | Wed, 22 Oct 2008 19:47:35 +0900 |
parents | 9e761988e372 |
children | fcd3800b4d26 |
line wrap: on
line source
<html> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"> <head> <title>Remote Editor Procotol</title> </head> <body> <h1>Remote Editor Procotol</h1> <a href=#content>content</a><br> <nr> <p> <hr> <h2><a name="content000">EditorとSession Manager の間の非同期Merge </a></h2> Merge はsesion manager側で行なわれるので、それと同時にeditor 側からの入力がある場合がある。start_merge,end_merge を流すので、editorは、それを使って入力をlock(できれば)した方が良い。editorからの割込みがあった場合は、もう一度やり直す。これは、local な処理。割り込まれた入力は、そのままsession ringに流して良い。 <p> <center><img src="reMerge.jpg"></center> <p> editorからのcommandは、session ringを廻るが、editorには戻らない。その代わり、start_merge が出る。merge_command は、eid=-2がついているので、editorは、これを実行しsession managerに返す必要がある。(これを見て、割り込みがあったかどうかを判断する) <p> <center><img src="merge-sequence.jpg"></center> <p> <hr> <h2><a name="content001">Sessionのquit</a></h2> まず、quitを廻して、editorからの入力を止める。既に、入力されたcommandは、quitの前後にいる。 <p> <center><img src="terminate1.jpg"></center> <p> quitが一周したら、quit2を流す。quit2を出す時には、editorが自分が出したcommandが一周するのを確認した後になる。確認は、session managerが行なう。最初のeditorは、quit2を出した時には終了出来ず、quit2_ack を待つ必要がある。その他は、quit2を出したら終了して良い。 <p> <center><img src="terminate2.jpg"></center> <p> closeも同様だが、client editorは単に抜けるだけで良い。master editorが抜ける時には、quitを行なう。 <p> <hr> <h2><a name="content002">Session Manager の切断時の処理</a></h2> 切断された時には、gatherを使って、自分がどのsession を持っているかを判断する必要がある。gatherの後で、updateを行なう。 <p> <center><img src="disconnect.jpg"></center> <p> <hr> <h2><a name="content003">Session Manager の join</a></h2> ループの検出を行なう必要がある。 <p> <center><img src="sm_join.jpg"></center> <p> <hr> <h2><a name="content004">Session Manager にまたがるsession</a></h2> <center><img src="inter-sm-session.jpg"></center> <p> <hr> <h2><a name="content005">Session Manager にまたがる join/put</a></h2> <center><img src="inter-sm-join.jpg"></center> <p> <hr> <h2><a name="content006">Session Manager にまたがる select</a></h2> <center><img src="inter-sm-select.jpg"></center> <h2><a name="content">Content</h2> <ol> <li><a href="#content000"> EditorとSession Manager の間の非同期Merge </a> <li><a href="#content001"> Sessionのquit</a> <li><a href="#content002"> Session Manager の切断時の処理</a> <li><a href="#content003"> Session Manager の join</a> <li><a href="#content004"> Session Manager にまたがるsession</a> <li><a href="#content005"> Session Manager にまたがる join/put</a> <li><a href="#content006"> Session Manager にまたがる select</a> </ol> </body></html>