comparison paper/chapter3.tex @ 42:585196deaace

Added figures
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Wed, 29 Jan 2014 18:41:30 +0900
parents 63eca978482f
children 34ac359f20f1
comparison
equal deleted inserted replaced
41:a59ede6b5a5a 42:585196deaace
86 \begin{lstlisting}[frame=lrbt,label=src:run_program,caption=トポロジーマネージャーの利用,numbers=left] 86 \begin{lstlisting}[frame=lrbt,label=src:run_program,caption=トポロジーマネージャーの利用,numbers=left]
87 % java Program -host mass00.cs.ie.u-ryukyu.ac.jp -port 10000 87 % java Program -host mass00.cs.ie.u-ryukyu.ac.jp -port 10000
88 \end{lstlisting} 88 \end{lstlisting}
89 89
90 \section{Alice を用いての分散実装} 90 \section{Alice を用いての分散実装}
91 形成されたトポロジー上でのデータの送受信を行う部分について述べる. 91 Aliceのポロジー形成と他のサーバのデータへのアクセスする機構を用いるためには, Aliceが
92 92 提供するプログラミングスタイルに沿わなければならない.
93 93 それはDataSegment(データ)とCodeSegment(タスク)によるプログラムである.
94 94 ここではまずDataSegmentとCodeSegmentによるプログラムの方法について説明し, 他サーバとの
95 通信部分の実装について述べる.
96
97 \subsection{Alice によるプログラミング}
98 AliceはDataSegment(データ)とCodeSegment(タスク)単位でプログラミングを行うことを述べた.
99 CodeSegmentには計算に必要なDataSegmentが登録される.
100 そしてDataSegmentが準備され次第CodeSegmentによる計算が実行される.
101 DataSegmentの取得は文字列のキーを使うことで行える.
102 以下のコードにCodeSegmentの例を示す.
103 \begin{lstlisting}[frame=lrbt,label=src:syslog_nfconntrack,caption=CodeSegmentの実行,numbers=left]
104 public class TestCodeSegment extends CodeSegment {
105 // DataSegment
106 public Receiver ds = ids.create(CommandType.TAKE);
107
108 public TestCodeSegment() {
109 }
110
111 public void run() {
112 int count = ds.asInteger();
113 count++;
114 System.out.println("count = "+count);
115 if(c > 10) { exit(0); }
116 CodeSegment cs = new TestCodeSegment();
117 cs.setKey("count");
118 ods.update("local", "count", c);
119 }
120
121 public static void main(String[] args) {
122 CodeSegment cs = new TestCodeSegment();
123 cs.ds.setKey("local", "count");
124 cs.ods.update("local", "count", 0);
125 }
126 }
127 \end{lstlisting}
128 このプログラムは, 数字を1から10まで出力を行い終了する.
129 コードの説明を行う.
130 まずTestCodeSegmentというCodeSegmentのインスタンスcsを生成する.
131 csにはdsというReceiverクラスのフィールドを保持している.
132 このdsがDataSegmentになる.
133 次に\verb|ds.setKey|
134
135
136 % Alice の他サーバノードへの"log"のputの問題
95 137
96 \section{ログのシリアライズ} 138 \section{ログのシリアライズ}
97 ここでログのシリアライズについて述べる. 139 ここでログのシリアライズについて述べる.
98 140
99 シリアライズとは, データをネットワーク上に流しても良い形式に変換することである. 141 シリアライズとは, データをネットワーク上に流しても良い形式に変換することである.