Mercurial > hg > Papers > 2013 > nobuyasu-jssst
changeset 20:04e41820d930
modified description for DefaultTreeOperationLogContainer
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 18 Jul 2013 17:33:39 +0900 |
parents | 4afecc3d3331 |
children | 9dcb40e74ab9 |
files | Paper/jssst.tex |
diffstat | 1 files changed, 43 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/Paper/jssst.tex Thu Jul 18 15:20:36 2013 +0900 +++ b/Paper/jssst.tex Thu Jul 18 17:33:39 2013 +0900 @@ -35,7 +35,7 @@ % 和文論文の場合,姓と名の間には半角スペースを入れ, % 複数の著者の間は全角スペースで区切る % -\author{大城 信康 \and 河野 真治 \and 杉本 優 +\author{大城 信康 \and 杉本 優 \and 河野 真治 % % ここにタイトル英訳 (英文の場合は和訳) を書く. % @@ -45,7 +45,7 @@ % 所属 (和文および英文) を書く. % 複数著者の所属はまとめてよい. % -\shozoku{Nobuyasu OSHIRO, Shinij KONO,Yu SUGIMOTO }{琉球大学大学院理工学研究科情報工学専攻並列信頼研}% +\shozoku{Nobuyasu OSHIRO,Yu SUGIMOTO, Shinij KONO }{琉球大学大学院理工学研究科情報工学専攻並列信頼研}% {Dept.Concurrency Reliance Laboratory, Information Engineering Course, Faculty of Engineering Graduate School of Engineering and Science, University of the Ryukyus} % % 出典情報は \shutten とすれば出力される. @@ -111,19 +111,10 @@ \item \verb+void peek(Receiver receiver, String key)+ \item \verb+void take(Receiver receiver, String key)+ \end{itemize} - -\subsubsection{put} put は Data Segment をリストへと追加する API である. - -\subsubsection{update} update はリストに入っている Data Segment を更新する API である. - - -\subsubsection{peek} peek はリストに入っている Data Segment を取り出す API である. peek により取り出された Data Segement はリストより削除されない. - -\subsubsection{take} take はリストに入っている Data Segment を取り出す API である. 取り出した Data Segment はリストより削除される. @@ -268,15 +259,43 @@ \subsection{TreeOperationLog の MessagePack によるシリアライズ} -TreeOperationLog はいくつかの TreeOperation を List で保持している. -そして TreeOperation は NodeOperation と NodePath を保持し, NodePath は -Integer の List となっている. +TreeOperationLog はそのまま MessagePack でシリアライズすることはできない. +TreeOperationLog は TreeOperation をフィールドに List として保持していた. +フィールドとして保持しているものは全て MessagePack でシリアライズできるものに +しなけれならない. +そこで, フィールドで保持しているもの Value 型に変換するための Container クラス +作成をそれぞれ行った. +ログに関連するクラス全てをシリアライズするクラスを行った後に, それら全てをまとめる +DefaultTreeOperationLogContainer クラスの作成を行った. +このクラスは TreeOperationLog を Value 型へと変換しフィールド変数で保持する. +実際に TreeOperationLog のシリアライズを行うソースを次に示す. -これらを MessagePack でシリアライズするために, それぞれのシリアライズを -行う DefaultTreeOperationLogContainer というクラスの作成を行った. -このクラスは TreeOperationLog を Value 型へと変換して保持し, 他に編集した木の名前やリビジョン番号, -変更を行ったノードの名前といった情報も保持する. -Data Segment へログを put するときはこの DefaultTreeOperationLogContainer クラスを使用する. +\begin{lstlisting}[label=operation_log, caption=TreeOperationLog のシリアライズ] +public void unconvert(Iterable + <TreeOperation> _log) throws IOException { + MessagePack msgpack = new MessagePack(); + List<Value> list = new LinkedList<Value>(); + for(TreeOperation op : _log) { + NodeOperation nOp = op.getNodeOperation(); + NodePath nodePath = op.getNodePath(); + DefaultTreeOperation treeOp + = new DefaultTreeOperation(nodePath, nOp); + DefaultTreeOperationContainer c + = new DefaultTreeOperationContainer(); + c.unconvert(treeOp); + Value v = msgpack.unconvert(c); + list.add(v); + } + Value listValue + = msgpack.unconvert(list); + logValue = listValue; // field variable +} +\end{lstlisting} + +List で保持していた TreeOperation を List<Value> へと変換させている. +また, TreeOperationLog の保持だけでなく, 編集した木の名前やリビジョン番号, 変更を行ったノードの情報を +ノードの名前といった情報も保持するようにした. +DefaultTreeOperationLogContainer により, TreeOperationLog を Data Segment へと put することができる. \subsection{TreeOperationLog を扱う Data Segment} Alice の各ノードは "log", "childLog" というキーで DefaultTreeOperationLogContiner を扱う(図\ref{fig:log}). @@ -297,7 +316,11 @@ \end{center} \end{figure} -親の "log" と, 子供により put される "childLog" にデータがいれられると, そのデータを +親の "log" と, 子供により put される "childLog" にデータがいれられると, そのデータを元に +データの編集を行う Code Segment が走りだす. + + +\subsection{} \subsection{}