Mercurial > hg > Papers > 2009 > rep-verify-sigos
changeset 7:6d15c7d67941
fix
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 24 Apr 2009 08:31:40 +0900 |
parents | 74bad457cfc2 |
children | 93c2d8dc3469 |
files | presentation/rep-verify-sigos.ind |
diffstat | 1 files changed, 59 insertions(+), 73 deletions(-) [+] |
line wrap: on
line diff
--- a/presentation/rep-verify-sigos.ind Fri Apr 24 07:50:06 2009 +0900 +++ b/presentation/rep-verify-sigos.ind Fri Apr 24 08:31:40 2009 +0900 @@ -2,15 +2,18 @@ --author: 与儀健人, 宮城健太, 河野真治 ---はじめに - - ---Remote Editing Protocol の設計方針 +--Remote Editing Protocol って? 複数の「既存」のEditorを相互に接続する Emacs, Vim, Eclipse など +ずいぶん、ながくやってますが... + +まだ、動いてません。 + +--Remote Editing Protocol の設計方針 + Local Editing を阻害しない 接続されたEditorは同等 @@ -37,6 +40,12 @@ Session Manager +--Session Manager + +Editor はdefaultで、ローカルなSession Manager に接続する + +<center><img src="fig/one_session_manager.jpg" alt="Session Managerの導入"></center> + --Protocol の構成 Session Manager への接続 (sm_join) @@ -47,6 +56,24 @@ Editor Command の衝突の解消(Merge) +---Session managerの接続protocol + +<center><img src="fig/many_session_manager.jpg" alt="Session Manager同士の接続"></center> + +---Session 接続 protocol + +<center><img src="fig/sm_join.jpg" alt="join コマンド"></center> + +<center><img src="fig/use_case_put_join_over_sm.jpg" alt="Session Managerを介したエディタの接続"></center> + + +---Merge Protocol + +編集の衝突を解決する + +<center><img src="fig/new_merge.jpg" alt="Session Ring上のREPコマンドの送信"></center> + + --Merge をSession Manager 上で行なう 編集Sessionはring を構成する @@ -55,6 +82,29 @@ Command と Ack はringをそれぞれ一周する +---Merge のSession Managerへの移動 + +Merge 作業とEditor上の編集が衝突する場合もある + +<center><img src="fig/reMerge.jpg" alt="リマージ"></center> + +Editor側のlockが可能ならばlockしても良い。(optional) + +lock の実装が難しい場合もある。 + +--Editor 側で実装する必要がある機能 + +<table border="1"> +<tr><td>1 <td> 編集機能の user_insert,user_deteleへの分解 +<tr><td>2 <td>分解したEditor Command の送信 +<tr><td>3 <td> join,put Command のUI部分と、Command の送信 +<tr><td>4 <td> join_ack,put_ack の受け取りとsid,eidの設定 +<tr><td>5 <td> 外部からのEditor Commandの非同期受け取りと実行 +<tr><td>6 <td> sync Command を受け取った場合の user_insert,user_deteleの生成 +<tr><td>7 <td> Merge 時のlock (optional) +<tr><td>8 <td> quit Command +</table> + --Protocol はかなり複雑 2つでは大丈夫だが、3つでおかしくなる @@ -107,77 +157,13 @@ テストの正しさは終了時に判定するのが簡単 ----Session managerの導入 - -<center><img src="fig/one_session_manager.pdf" alt="Session Managerの導入"></center> - ----Session managerの接続protocol - -<center><img src="fig/many_session_manager.pdf" alt="Session Manager同士の接続"></center> - ----Session 接続 protocol - -<center><img src="fig/sm_join.pdf" alt="join コマンド"></center> - -<center><img src="fig/use_case_put_join_over_sm.pdf" alt="Session Managerを介したエディタの接続"></center> - ----Editor Command - ----Merge Protocol - - -<center><img src="fig/new_merge.pdf" alt="Session Ring上のREPコマンドの送信"></center> - - ----Merge のSession Managerへの移動 - +--まとめ -<center><img src="fig/reMerge.pdf" alt="リマージ"></center> - - ---Protocol の正しさ - - ---Protocol の実装 - +REPのSession Manager のプロトコルを設計し、実装した -Editor 側で実装する必要があるのは、表\ref{tb:sync}の機能である。 -\begin{table}[htdp] -\caption{Editor 側での実装} -\begin{center} -\begin{tabular}{|l|l|} -\hline -1 & 編集機能の{\tt user\_insert,user\_detele}への分解と、分解したEditor Command の送信 \\ -\hline -2 & {\tt join,put} Command のUI部分と、Command の送信 \\ -\hline -3 & {\tt join,put} Command のUI部分と、Command の送信 \\ -\hline -4 & {\tt join\_ack,put\_ack} の受け取りとsid,eidの設定 \\ -\hline -5 & 外部からのEditor Commandの非同期受け取りと実行 \\ -\hline -6 & {\tt sync} Command を受け取った場合の{\tt user\_insert,user\_detele}の生成 \\ -\hline -7 & Merge 時のlock (optional) \\ -\hline -7 & {\tt quit} Command \\ -\hline -\end{tabular} -\end{center} -\label{tb:sync} -\end{table}% +Java PathFinder で検証するためのSocket/Thread 互換通信ライブラリを実装した - ---Socket Simulator - - ---検証とデバッグ +Java PathFinder で検証するために、状態の数を下げる変更を検討中 - ---比較 - - ---最後に - +まだ、バグが残っているので...