Mercurial > hg > Papers > 2015 > sugi-master
changeset 26:cefaf86da446
fix
author | sugi |
---|---|
date | Wed, 04 Feb 2015 19:10:32 +0900 |
parents | 94bc06c2a7b2 |
children | a27c97e0bb15 |
files | paper/chapter1.tex paper/chapter2.tex paper/chapter3.tex paper/images/multicast.pdf paper/images/remote_datasegment.graffle paper/images/remote_datasegment.pdf paper/master_paper.pdf paper/master_paper.tex paper/source/MulticastIncrement.java paper/source/MulticastStartCodeSegment.java paper/source/StartCodeSegment.java paper/source/TestCodeSegment.java |
diffstat | 12 files changed, 1339 insertions(+), 275 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/chapter1.tex Wed Feb 04 15:44:15 2015 +0900 +++ b/paper/chapter1.tex Wed Feb 04 19:10:32 2015 +0900 @@ -7,7 +7,6 @@ CSは実行に必要なDSが揃うと実行されるという性質を持つ。そして入力されたDSに応じた結果が出力される。 入力されるDSはInput DS、出力されるDSはOutput DSと呼ばれる(図 \ref{fig:dsandcs})。Input DSはそのCSを実行するために必要なデータ群であり、Output DSはCSが計算を行った結果を格納するデータ群である。 -%CSとDSはkeyによって結び付けられている \begin{figure}[htbp] \begin{center} @@ -43,28 +42,26 @@ このlockがスケラビリティーを低下させる。つまりデータのサイズも並列計算には重要である。 Aliceはデータを細かく分割して記述する。その細かく分割されたデータをDSと呼ぶ。 +実際には特定のオブジェクトにマッピングされ、マッピングされたクラスを通してアクセスされる。 -DSには必ず対になるkeyが存在し、このkeyとペアでデータベースに保存される。 -データベースからDSを取得する場合にはこのkeyを指定すればよい。 - +\section{Data Segment Manager} +DSは実際にはqueueに保存される。queueには対になるkeyが存在し、keyの数だけqueueが存在する。 +このkeyを指定してDSの保存、取得を行う。 +queueの集合体はデータベースとして捉えられる。 このデータベースをAliceではDS Manager(以下DSM)と呼ぶ。 -DSMは「key」と「queue」がペアとして保存するKey Value Queueで実装されている。 -そのため複数のDSを1つのkeyに保存することができる。 - - -またノード毎にLocal DSMとRemote DSMが存在する。Local DSMは各ノード固有のデータベースとなっている。 -Remote DSMはkeyはノード内部でuniqueなkeyが割り当てられており、そのkeyを指定することで使用できる。 -Remote DSMは他のノードのLocal DSMのproxyである。 +DSMにはLocal DSMとRemote DSMが存在する。Local DSMは各ノード固有のデータベースである。 +Remote DSMは他のノードのLocal DSMであり、接続しているノードの数だけ存在する。(図\ref{fig:RemoteDSM}) +Remote DSMにも対になるkeyが存在し、そのkeyを指定して利用する。 +Local DSMへのアクセスはノード内部で逐次化される。 \begin{figure}[htbp] \begin{center} -\includegraphics{images/remote_datasegment.pdf} +\includegraphics[width=100mm]{images/remote_datasegment.pdf} \end{center} -\caption{Remote DSMは他のノードのLocal DSMのproxy 書き直し} +\caption{Remote DSMは他のノードのLocal DSMのproxy } \label{fig:RemoteDSM} \end{figure} -データベースへのアクセスはノード内部で逐次化される。それ以外は、すべてJavaのThread Poolにより並列実行される。 \section{Data Segment API} 以下のData Segment APIを用いてデータベースにアクセスする。 @@ -75,47 +72,17 @@ \item \verb+void take(String key)+ \end{itemize} putとupdateはDSを追加する際に、peekとtakeはDSを取得する際に使用する。 -第一引数にDSとペアになっているkeyを指定する。putとupdateのみ第二引数があり追加するDSを指定する。 \subsubsection{put} -DSをqueueに追加するためのAPIである。図 \ref{fig:put}ではkey1に対応するqueueに対してDSを追加している。key2に対応するqueueに対してDSを追加するためには第一引数を"key2"と指定する。 -\begin{figure}[htbp] -\begin{center} -\includegraphics[width=80mm]{images/put.pdf} -\end{center} -\caption{"put"はQueueにDSを追加する} -\label{fig:put} -\end{figure} - +DSをqueueに追加するためのAPIである。第一引数に対応するqueueに対してDSを追加している。 \subsubsection{update} -updateもqueueに追加するためのAPIである。putとの違いは、先頭のDSを削除してからDSを追加することである。そのためAPI実行前後でqueueの中にあるDSの個数は変わらない。(図 \ref{fig:update}) -\begin{figure}[htbp] -\begin{center} -\includegraphics[width=100mm]{images/update.pdf} -\end{center} -\caption{"update"は先頭のDSを取り除きDSを追加する} -\label{fig:update} -\end{figure} +updateもqueueに追加するためのAPIである。putとの違いは、先頭のDSを削除してからDSを追加することである。そのためAPI実行前後でqueueの中にあるDSの個数は変わらない。 \subsubsection{take} -takeはDSを読み込むためのAPIである。読み込まれたDSは削除される。要求したDSが存在しなければ、CSの待ち合わせ (Blocking)が起こる。putやupdateによりDSに更新があった場合、takeが直ちに実行される。(図 \ref{fig:take}) -\begin{figure}[htbp] -\begin{center} -\includegraphics[width=100mm]{images/take.pdf} -\end{center} -\caption{"take" は先頭のDSを読み込みqueueから削除する} -\label{fig:take} -\end{figure} +takeはDSを読み込むためのAPIである。読み込まれたDSは削除される。要求したDSが存在しなければ、CSの待ち合わせ (Blocking)が起こる。putやupdateによりDSに更新があった場合、takeが直ちに実行される。 \subsubsection{peek} -peekもDSを読み込むAPIである。takeとの違いは読み込まれたDSが削除されないことである(図 \ref{fig:peek})。 -\begin{figure}[htbp] -\begin{center} -\includegraphics[width=100mm]{images/peek.pdf} -\end{center} -\caption{"peek"も先頭にあるDS読み込む} -\label{fig:peek} -\end{figure} +peekもDSを読み込むAPIである。takeとの違いは読み込まれたDSが削除されないことである。 DSの表現にはMessage Packを利用している。Message Packに関してJavaにおけるデータ表現は以下の3種類があり、制限を伴うが互いに変換可能である。 \begin{itemize} @@ -142,44 +109,57 @@ Inputの場合はsetKeyを呼ぶ際、Outputの場合はput(またはupdate)の際にノードとkeyの指定を行っている。 しかし、どの時点でノードとkeyの指定を行えばよいか、どのようなAPIを用意するべきかは、議論の余地がある。 +\section{Code Segmentの記述方法} +CSをユーザーが記述する際にはCSを継承して記述する(ソースコード \ref{src:StartCodeSegment} ,\ref{src:CodeSegment})。 +継承することによりCode Segmentで使用するAPIを利用する事ができる。 -\section{Code Segmentの実行方法} -Alice には、Start CS (ソースコード \ref{src:StartCodeSegment})というC の main に相当するような最初に実行される CS がある。 \begin{table}[html] \lstinputlisting[label=src:StartCodeSegment, caption=StartCodeSegmentの例]{source/StartCodeSegment.java} +\lstinputlisting[label=src:CodeSegment, caption=CodeSegmentの例]{source/TestCodeSegment.java} \end{table} +Alice には、Start CS (ソースコード \ref{src:StartCodeSegment})というC の main に相当するような最初に実行される CS がある。 Start CSはどのDSにも依存しない。つまりInput DSを持たない。 このCSをmainメソッド内でnewし、executeメソッドを呼ぶことで実行を開始させることができる。 - -\section{Code Segmentの記述方法} -CSをユーザーが記述する際にはCSを継承して記述する(ソースコード \ref{src:CodeSegment})。 -CSはデータベースに対して入力の際はInput DSMを出力の際はOutput DSMを用いて操作する。 - -Input DSM はCSの{\tt ids}というフィールドを用いてアクセスする。 - -\begin{table}[html] -\lstinputlisting[label=src:CodeSegment, caption=CodeSegmentの例]{source/TestCodeSegment.java} -\end{table} - -\begin{itemize} -\item {\ttfamily Receiver create(CommandType type)} -\end{itemize} -createでコマンドが実行された際に取得されるDSが格納される受け皿を作る。引数にはCommandTypeが取られ、指定できるCommandTypeは{\tt PEEK}または{\tt TAKE}である。 -\begin{itemize} -\item \verb+void setKey(String managerKey, String key)+ -\end{itemize} -setKeyメソッドにより、どこのDSのあるkeyに対してpeekまたはtakeコマンドを実行させるかを指定することができる。 -コマンドの結果がレスポンスとして届き次第CSは実行される。 - +ソースコード \ref{src:StartCodeSegment}は、5行目で次に実行させたいCS(ソースコード \ref{src:CodeSegment})を作成している。8行目でOutput DSMを通してLocal DSMに対してDSをputしている。 Output DSMはCSの{\tt ods}というフィールドを用いてアクセスする。 -Output DSMは{\tt put}または{\tt update}を実行することができる。 +Output DSMは{\tt put}と{\tt update}を実行することができる。 \begin{itemize} \item \verb+void put(String managerKey, String key, Object val)+ \item \verb+void update(String managerKey, String key, Object val)+ \end{itemize} +TestCodeSegmentはこの"cnt"というkeyに対して依存関係があり、8行目でupdateが行われるとTestCodeSegmentは実行される。 +ソースコード\ref{src:CodeSegment}は、0から10までインクリメントする例題である。 +2行目で取得されたDSが格納される受け皿を作る。Input DSMがもつcreateメソッド使うことで作成できる。 +\begin{itemize} +\item {\ttfamily Receiver create(CommandType type)} +\end{itemize} + +引数にはCommandTypeが取られ、指定できるCommandTypeは{\tt PEEK}または{\tt TAKE}である。 +Input DSM はCSの{\tt ids}というフィールドを用いてアクセスする。 + +4行目から6行目はコンストラクタである。コンストラクタはオブジェクト指向のプログラミング言語で新たなオブジェクトを生成する際に呼び出されて内容の初期化を行う関数である。 + +TestCodeSegmentのコンストラクタが呼ばれた際には、 +\begin{enumerate} +\item TestCodeSegmentが持つフィールド変数Receiver input1の定義が行われる。 +\item 次にCSのコンストラクタが呼ばれ、CSが持つフィールド変数の定義と初期化が行われる。 +\item {\tt ids.create(CommandType.TAKE)}が行われ、input1の初期化が行われる。 +\item 最後にTestCodeSegmentのコンストラクタの5行目が実行される。 +\end{enumerate} + +5行目はInput DSMがもつsetKeyメソッドによりLocal DSMからDSを取得している。 +\begin{itemize} +\item \verb+void setKey(String managerKey, String key)+ +\end{itemize} +setKeyメソッドにより、どのDSMのあるkeyに対してpeekまたはtakeコマンドを実行させるかを指定できる。コマンドの結果がレスポンスとして届き次第CSは実行される。 + +runメソッドの内容としては10行目で取得されたDSをInteger型に変換してcountに代入している。 +16行目で もう一度TestCodeSegmentのCSが作られる。 +17行目でcountの値をインクリメントしてLocal DSMに値を追加する。 +13行目が終了条件であり、countの値が10になれば終了する。 \section{Meta Data Segment} DSは、アプリケーションに管理されているデータのことである。アプリケーションを構成するCSによってその値は変更される。 @@ -197,65 +177,4 @@ それに対してMeta CSはAliceを構成するタスクである。つまりMeta CSの群はAliceのComputationと言い換えることができる。一部のみユーザーが定義をすることができ、Aliceの挙動を変更することができる。 \section{Topology Manager} -Aliceは複数のノードで構成され、相互に接続される。通信するノードはURLにより直接指定するのではなくTopology Managerで管理する。 -Topology Managerはトポロジーファイルを読み込み、参加を表明したクライアント(以下、Topology Node)に接続するべきTopology NodeのIPアドレス、ポート番号、接続名を送りトポロジーファイルに記述されたとおりにトポロジーを作成する。(図\ref{fig:topologymanager}) - -\begin{figure}[htbp] -\begin{center} -\includegraphics[width=70mm]{images/topologymanager.pdf} -\end{center} -\caption{Topology Manager はトポロジーファイルの記述に従ってトポロジーを生成する} -\label{fig:topologymanager} -\end{figure} - -CS内部でRemote DSMにアクセスする場合はToplogyManagerによって指定されたノード内部だけで有効なlabel(文字列)を使う。これにより特定のURLがCS内部に記述されることを防いでいる。 - -トポロジーファイルはグラフ構造を表現するデータ記述する言語の一種であるDOT Languageと呼ばれる言語で記述する。また、dotコマンドを用いてトポロジーファイルを可視化することができる。 - -\section{Topology Managerの参加表明処理} -Topology Managerへの参加表明は、Topology Node起動時にコマンドライン引数からTopology ManagerのIPアドレスとポート番号を指定すればよい。 - -参加表明を行ってからリングトポロジーができるまでのコミュニケーションダイアグラムを示す。 -\begin{figure}[htbp] -\begin{center} -\includegraphics[width=100mm]{images/topologymanagerandnode1.pdf} -\end{center} -\caption{参加表明したノードに対して抽象名を返す} -\label{fig:topologymanagerandnode1} -\end{figure} - -\begin{enumerate} -\item 指定されたTopology Managerに接続を行うと、Topology Manager側のキー"hosts"に、自分自身のIPアドレスとポート番号をputする。 -\item 参加表明を受け取ったTopology Managerは、抽象名を参加表明したTopology Nodeのキー"host"にputする。 -\end{enumerate} - -\begin{figure}[htbp] -\begin{center} -\includegraphics[width=100mm]{images/topologymanagerandnode2.pdf} -\end{center} -\caption{Topology Nodeは接続すべきNodeの情報をTopology Managerに要求する} -\label{fig:topologymanagerandnode2} -\end{figure} - - -\begin{enumerate} -\setcounter{enumi}{3} -\item Topology NodeはTopology Managerに対してtakeを行う。指定するkeyは"host"に投入された文字列である。 -\item takeへの応答として接続すべきTopology Nodeの情報(IP アドレス、ポート番号等)がreplyされる。 -\end{enumerate} - - -\begin{figure}[htbp] -\begin{center} -\includegraphics[width=100mm]{images/topologymanagerandnode3.pdf} -\end{center} -\caption{リングトポロジーの完成} -\label{fig:topologymanagerandnode3} -\end{figure} -\begin{enumerate} -\setcounter{enumi}{5} -\item replyされた情報に対して接続処理を行う。 -\item 3から5を繰り返し行うことでリングトポロジーが完成する。 -\end{enumerate} - -全ての接続処理が終わるとTopology ManagerからTopology Nodeに対してStart CSの実行命令が出され、アプリケーションが開始される。 +Aliceにおけるノードの管理は全てTopology Managerで管理される。Topology Managerの詳細は付録で示す。
--- a/paper/chapter2.tex Wed Feb 04 15:44:15 2015 +0900 +++ b/paper/chapter2.tex Wed Feb 04 19:10:32 2015 +0900 @@ -1,17 +1,18 @@ \chapter{Aliceを使った例題} \label{chapter:chapter2} -この章ではAliceを用いて作成されたアプリケーションを紹介する。これらのアプリケーションでAliceの性能テスト、必要な機能の洗い出しを行っている。 +この章ではAliceを用いて作成されたアプリケーションを紹介する。 \section{水族館ゲーム} Aliceで作成された始めての分散アプリケーションである。Aliceに分散アプリケーションを記述する能力があることを確かめるために作成された。 -過去にFederated Linda \cite{linda, globalid, dinamicrouting, dinamicrouting2, dinamicrouting_compact, akamine:2009a, akamine:2010a, akamine:2011a} でも作成されている。UIとしてJava7から組み込まれたJavaFxが使用されている。 +過去にFederated Linda \cite{linda} でも作成されている。UIとしてJava7から組み込まれたJavaFxが使用されている。 アプリケーションを起動すると参加したノード1台ごとに1つウインドウが表示される。表示されたウインドウの中にユーザが操作可能な魚が1匹表示されている。魚は画面端まで移動すると自分の画面上からは消え、隣のプレイヤーの画面端に表示される。 + \begin{figure}[htbp] \begin{center} -\includegraphics[width=160mm]{images/aquarium.pdf} +\includegraphics[width=90mm]{images/NodeToClient.pdf} \end{center} -\caption{JavaFx 水族館ゲーム} -\label{fig:aquarium} +\caption{データの伝搬の様子} +\label{fig:NodeToClient} \end{figure} \subsection{処理の流れ} @@ -28,16 +29,17 @@ \item 各clientで\ref{point:replyData} から\ref{point:sendData} が実行され、fishPositionが全体で共有される。 \end{enumerate} \ref{point:sendData}ではlistを参照して、利用可能なRemote Data SegmentにData Segmentをputしているが、この利用可能なRemote Data Segmentの中にはData Segmentを送信してきたものが含まれている。全てのRemote Data Segmentに送信してしまうと同じData Segmentを永遠にやりとりすることになる。しかし、Data Segmentは送信元のメタ情報が付加されており、このメタ情報を利用して送信元のRemote Data Segmentに対してfishDataを送り返すことを防いでいる。 +\begin{figure}[htbp] +\begin{center} +\includegraphics[width=160mm]{images/aquarium.pdf} +\end{center} +\caption{JavaFx 水族館ゲーム} +\label{fig:aquarium} +\end{figure} 今回の研究で再接続の際の挙動をMeta Computationにより変更することができる。水族館の例題ではノードが再接続してきた場合に前回の位置から始められるように挙動が変更されている。 -\begin{figure}[htbp] -\begin{center} -\includegraphics[width=110mm]{images/NodeToClient.pdf} -\end{center} -\caption{データの伝搬の様子} -\label{fig:NodeToClient} -\end{figure} + \section{bitonic sort} bitnic sortは並列ソートであり、Aliceがマルチコアに対応していることを確認するため実装した。
--- a/paper/chapter3.tex Wed Feb 04 15:44:15 2015 +0900 +++ b/paper/chapter3.tex Wed Feb 04 19:10:32 2015 +0900 @@ -148,11 +148,11 @@ \label{fig:multicast} \end{figure} -図 \ref{fig:multicast}はMulticast Data Segmentを図で表したものである。Multicast Data Segmentに対してputを行うとnode D、node E、node Fの3つのnodeに対してデータがputされる。同様にTakeを行うと3つのnodeからreplyが来る。 -\subsection{Multicast Data Segmentの制限} +図 \ref{fig:multicast}はMulticast Data Segmentを図で表したものである。Node AのMulticast Data Segmentに対してputを行うとnode B、node C、node Dの3つのnodeに対してデータがputされる。同様にTakeを行うと3つのnodeからTakeに対する応答が来る。 + Multicast Data SegmentはUDPを用いて実装されている。1つのUDPのパケットで運ぶことのできるデータが、65507bytes(65535bytesからIPヘッダの最低サイズ20bytesとUDPのヘッダのサイズ8bytesを引いた大きさ)である。 現状、分割して送る処理をMulticast Data Segmentが持たない。従って、Multicast Data Segmentを利用する際には、データのサイズを65507bytes以下にしなければならない。 -\subsection{Multicast Data Segment Manager} +\section{Multicast Data Segment Manager} Multicast Data SegmentもRemote DSM同様Managerを経由して操作を行う。Multicast DSMを作成するとMulticast Data Segmentに対する送受信用のスレッドが作成される。 \begin{itemize}
--- a/paper/images/remote_datasegment.graffle Wed Feb 04 15:44:15 2015 +0900 +++ b/paper/images/remote_datasegment.graffle Wed Feb 04 19:10:32 2015 +0900 @@ -47,8 +47,269 @@ <key>GraphicsList</key> <array> <dict> - <key>AllowLabelDrop</key> - <false/> + <key>Class</key> + <string>LineGraphic</string> + <key>FontInfo</key> + <dict> + <key>Color</key> + <dict> + <key>w</key> + <string>0</string> + </dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>41</integer> + </dict> + <key>ID</key> + <integer>49</integer> + <key>Points</key> + <array> + <string>{326.60940175781235, 547.9375}</string> + <string>{433.96875, 668.15625}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <false/> + <key>TailArrow</key> + <string>0</string> + <key>Width</key> + <real>2</real> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>34</integer> + <key>Info</key> + <integer>3</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>FontInfo</key> + <dict> + <key>Color</key> + <dict> + <key>w</key> + <string>0</string> + </dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>37</integer> + </dict> + <key>ID</key> + <integer>48</integer> + <key>Points</key> + <array> + <string>{219.57809824218762, 547.9375}</string> + <string>{99.84375, 668.15625}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <false/> + <key>TailArrow</key> + <string>0</string> + <key>Width</key> + <real>2</real> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>34</integer> + <key>Info</key> + <integer>4</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{408.96875, 733.125}, {50, 19}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>16</real> + </dict> + <key>ID</key> + <integer>47</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265\cocoasubrtf210 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs32 \cf0 NodeD}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{248.109375, 737.0625}, {50, 19}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>16</real> + </dict> + <key>ID</key> + <integer>46</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265\cocoasubrtf210 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs32 \cf0 NodeC}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{75.34375, 733.125}, {49, 19}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>16</real> + </dict> + <key>ID</key> + <integer>45</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265\cocoasubrtf210 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs32 \cf0 NodeB}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> <key>Class</key> <string>LineGraphic</string> <key>FontInfo</key> @@ -66,14 +327,16 @@ <key>Head</key> <dict> <key>ID</key> - <integer>3</integer> + <integer>39</integer> + <key>Info</key> + <integer>2</integer> </dict> <key>ID</key> - <integer>14</integer> + <integer>43</integer> <key>Points</key> <array> - <string>{281, 186}</string> - <string>{206, 186}</string> + <string>{273.09375, 573.25001265624996}</string> + <string>{273.109375, 672.09375}</string> </array> <key>Style</key> <dict> @@ -81,29 +344,72 @@ <dict> <key>HeadArrow</key> <string>FilledArrow</string> - <key>HeadScale</key> - <real>1.4285709857940674</real> <key>Legacy</key> - <true/> + <false/> <key>TailArrow</key> <string>0</string> - <key>TailScale</key> - <real>0.5</real> + <key>Width</key> + <real>2</real> </dict> </dict> <key>Tail</key> <dict> <key>ID</key> - <integer>10</integer> + <integer>34</integer> <key>Info</key> - <integer>4</integer> + <integer>1</integer> </dict> </dict> <dict> - <key>AllowLabelDrop</key> - <false/> + <key>Bounds</key> + <string>{{396.5625, 668.15625}, {74.8125, 41.625}}</string> <key>Class</key> - <string>LineGraphic</string> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>41</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265\cocoasubrtf210 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Local\ +DSM}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{364.5, 644.8125}, {138.9375, 88.3125}}</string> + <key>Class</key> + <string>ShapedGraphic</string> <key>FontInfo</key> <dict> <key>Color</key> @@ -112,47 +418,258 @@ <string>0</string> </dict> <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>40</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{235.703125, 672.09375}, {74.8125, 41.625}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> <string>Helvetica</string> <key>Size</key> <real>12</real> </dict> - <key>Head</key> - <dict> - <key>ID</key> - <integer>9</integer> - </dict> <key>ID</key> - <integer>13</integer> - <key>Points</key> + <integer>39</integer> + <key>Magnets</key> <array> - <string>{206, 122.75}</string> - <string>{281, 122}</string> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> </array> + <key>Shape</key> + <string>Rectangle</string> <key>Style</key> <dict> - <key>stroke</key> + <key>shadow</key> <dict> - <key>HeadArrow</key> - <string>FilledArrow</string> - <key>HeadScale</key> - <real>1.4285709857940674</real> - <key>Legacy</key> - <true/> - <key>TailArrow</key> - <string>0</string> - <key>TailScale</key> - <real>0.5</real> + <key>Draws</key> + <string>NO</string> </dict> </dict> - <key>Tail</key> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265\cocoasubrtf210 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Local\ +DSM}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{203.640625, 648.75}, {138.9375, 88.3125}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> <dict> - <key>ID</key> - <integer>4</integer> + <key>Color</key> + <dict> + <key>w</key> + <string>0</string> + </dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>38</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <integer>0</integer> </dict> </dict> <dict> <key>Bounds</key> - <string>{{310.5, 73}, {33, 14}}</string> + <string>{{62.4375, 668.15625}, {74.8125, 41.625}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>37</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265\cocoasubrtf210 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Local\ +DSM}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{30.375, 644.8125}, {138.9375, 88.3125}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Color</key> + <dict> + <key>w</key> + <string>0</string> + </dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>36</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{219.578125, 522.625}, {107.03125, 50.625}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>34</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265\cocoasubrtf210 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Multicast\ +DSM\ +\'93multicast\'94}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{248.59375, 438.75}, {49, 19}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FitText</key> @@ -164,10 +681,10 @@ <key>Font</key> <string>Helvetica</string> <key>Size</key> - <real>12</real> + <real>16</real> </dict> <key>ID</key> - <integer>11</integer> + <integer>33</integer> <key>Shape</key> <string>Rectangle</string> <key>Style</key> @@ -198,7 +715,7 @@ {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc -\f0\fs24 \cf0 HostB}</string> +\f0\fs32 \cf0 NodeA}</string> <key>VerticalPad</key> <integer>0</integer> </dict> @@ -207,7 +724,7 @@ </dict> <dict> <key>Bounds</key> - <string>{{281, 158.5}, {92, 55}}</string> + <string>{{235.6875, 473.8125}, {74.8125, 41.625}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FontInfo</key> @@ -218,53 +735,7 @@ <real>12</real> </dict> <key>ID</key> - <integer>10</integer> - <key>Magnets</key> - <array> - <string>{0, 1}</string> - <string>{0, -1}</string> - <string>{1, 0}</string> - <string>{-1, 0}</string> - </array> - <key>Shape</key> - <string>Rectangle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>Text</key> - <string>{\rtf1\ansi\ansicpg932\cocoartf1265\cocoasubrtf210 -{\fonttbl\f0\fswiss\fcharset0 Helvetica;} -{\colortbl;\red255\green255\blue255;} -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc - -\f0\fs24 \cf0 Remote\ -Data Segment\ -Manager}</string> - <key>VerticalPad</key> - <integer>0</integer> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{281, 94.5}, {92, 55}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>FontInfo</key> - <dict> - <key>Font</key> - <string>Helvetica</string> - <key>Size</key> - <real>12</real> - </dict> - <key>ID</key> - <integer>9</integer> + <integer>31</integer> <key>Magnets</key> <array> <string>{0, 1}</string> @@ -291,15 +762,14 @@ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc \f0\fs24 \cf0 Local\ -Data Segment\ -Manager}</string> +DSM}</string> <key>VerticalPad</key> <integer>0</integer> </dict> </dict> <dict> <key>Bounds</key> - <string>{{273, 87}, {108, 134}}</string> + <string>{{170.71875, 462.5625}, {204.75, 117.6796875}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FontInfo</key> @@ -315,7 +785,358 @@ <real>12</real> </dict> <key>ID</key> - <integer>8</integer> + <integer>30</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{421.34375, 369.5625}, {50, 19}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>16</real> + </dict> + <key>ID</key> + <integer>29</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265\cocoasubrtf210 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs32 \cf0 NodeD}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{248.09375, 369.5625}, {50, 19}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>16</real> + </dict> + <key>ID</key> + <integer>28</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265\cocoasubrtf210 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs32 \cf0 NodeC}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{75.34375, 369.5625}, {49, 19}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>16</real> + </dict> + <key>ID</key> + <integer>27</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265\cocoasubrtf210 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs32 \cf0 NodeB}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>FontInfo</key> + <dict> + <key>Color</key> + <dict> + <key>w</key> + <string>0</string> + </dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>23</integer> + </dict> + <key>ID</key> + <integer>26</integer> + <key>Points</key> + <array> + <string>{365.09375, 153.00001265624994}</string> + <string>{446.34375, 304.59375}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <false/> + <key>TailArrow</key> + <string>0</string> + <key>Width</key> + <real>2</real> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>16</integer> + <key>Info</key> + <integer>1</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>FontInfo</key> + <dict> + <key>Color</key> + <dict> + <key>w</key> + <string>0</string> + </dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>21</integer> + <key>Info</key> + <integer>2</integer> + </dict> + <key>ID</key> + <integer>25</integer> + <key>Points</key> + <array> + <string>{273.09375, 183.00001265624994}</string> + <string>{273.09375, 304.59375}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <false/> + <key>TailArrow</key> + <string>0</string> + <key>Width</key> + <real>2</real> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>15</integer> + <key>Info</key> + <integer>1</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>FontInfo</key> + <dict> + <key>Color</key> + <dict> + <key>w</key> + <string>0</string> + </dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>19</integer> + </dict> + <key>ID</key> + <integer>24</integer> + <key>Points</key> + <array> + <string>{181.09375, 153.00001265624994}</string> + <string>{99.84375, 304.59375}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <false/> + <key>TailArrow</key> + <string>0</string> + <key>Width</key> + <real>2</real> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>4</integer> + <key>Info</key> + <integer>1</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{408.9375, 304.59375}, {74.8125, 41.625}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>23</integer> <key>Magnets</key> <array> <string>{0, 1}</string> @@ -335,13 +1156,329 @@ </dict> <key>Text</key> <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265\cocoasubrtf210 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Local\ +DSM}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{376.875, 281.25}, {138.9375, 88.3125}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Color</key> + <dict> + <key>w</key> + <string>0</string> + </dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>22</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{235.6875, 304.59375}, {74.8125, 41.625}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>21</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265\cocoasubrtf210 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Local\ +DSM}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{203.625, 281.25}, {138.9375, 88.3125}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Color</key> + <dict> + <key>w</key> + <string>0</string> + </dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>20</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> <key>VerticalPad</key> <integer>0</integer> </dict> </dict> <dict> <key>Bounds</key> - <string>{{143.5, 73}, {33, 14}}</string> + <string>{{62.4375, 304.59375}, {74.8125, 41.625}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>19</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265\cocoasubrtf210 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Local\ +DSM}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{30.375, 281.25}, {138.9375, 88.3125}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Color</key> + <dict> + <key>w</key> + <string>0</string> + </dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>17</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{319.09375, 102.375}, {92, 50.625}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>16</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265\cocoasubrtf210 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Remote\ +DSM\ +\'93nodeD\'94}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{227.09375, 132.375}, {92, 50.625}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>15</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265\cocoasubrtf210 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Remote\ +DSM\ +\'93nodeC\'94}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{248.59375, 16.875}, {49, 19}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FitText</key> @@ -353,7 +1490,7 @@ <key>Font</key> <string>Helvetica</string> <key>Size</key> - <real>12</real> + <real>16</real> </dict> <key>ID</key> <integer>7</integer> @@ -387,7 +1524,7 @@ {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc -\f0\fs24 \cf0 HostA}</string> +\f0\fs32 \cf0 NodeA}</string> <key>VerticalPad</key> <integer>0</integer> </dict> @@ -396,7 +1533,7 @@ </dict> <dict> <key>Bounds</key> - <string>{{114, 95.25}, {92, 55}}</string> + <string>{{135.09375, 102.375}, {92, 50.625}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FontInfo</key> @@ -416,7 +1553,7 @@ <string>{-1, 0}</string> </array> <key>Shape</key> - <string>Rectangle</string> + <string>Circle</string> <key>Style</key> <dict> <key>shadow</key> @@ -434,15 +1571,15 @@ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc \f0\fs24 \cf0 Remote\ -Data Segment\ -Manager}</string> +DSM\ +\'93nodeB\'94}</string> <key>VerticalPad</key> <integer>0</integer> </dict> </dict> <dict> <key>Bounds</key> - <string>{{114, 158.5}, {92, 55}}</string> + <string>{{235.6875, 57.5}, {74.8125, 41.625}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FontInfo</key> @@ -480,15 +1617,14 @@ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc \f0\fs24 \cf0 Local\ -Data Segment\ -Manager}</string> +DSM}</string> <key>VerticalPad</key> <integer>0</integer> </dict> </dict> <dict> <key>Bounds</key> - <string>{{106, 87}, {108, 134}}</string> + <string>{{118.96875, 42.375}, {308.25, 150.75}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FontInfo</key> @@ -513,7 +1649,7 @@ <string>{-1, 0}</string> </array> <key>Shape</key> - <string>Rectangle</string> + <string>Circle</string> <key>Style</key> <dict> <key>shadow</key> @@ -578,7 +1714,7 @@ <key>MasterSheets</key> <array/> <key>ModificationDate</key> - <string>2015-02-03 21:05:35 +0000</string> + <string>2015-02-04 08:08:02 +0000</string> <key>Modifier</key> <string>YuSugimoto</string> <key>NotesVisible</key> @@ -650,13 +1786,13 @@ <key>WindowInfo</key> <dict> <key>BottomSlabHeight</key> - <real>593</real> + <real>623</real> <key>CurrentSheet</key> <integer>0</integer> <key>Expanded_Canvases</key> <array/> <key>Frame</key> - <string>{{128, 121}, {993, 937}}</string> + <string>{{128, 91}, {1594, 967}}</string> <key>ShowInfo</key> <true/> <key>ShowRuler</key> @@ -666,7 +1802,7 @@ <key>SidebarWidth</key> <integer>230</integer> <key>VisibleRegion</key> - <string>{{0, -6}, {446, 795}}</string> + <string>{{-244, -21}, {1047, 825}}</string> <key>Zoom</key> <real>1</real> <key>ZoomValues</key>
--- a/paper/master_paper.tex Wed Feb 04 15:44:15 2015 +0900 +++ b/paper/master_paper.tex Wed Feb 04 19:10:32 2015 +0900 @@ -89,6 +89,7 @@ \input{conclusion.tex} \input{appendix1.tex} + %謝辞 \input{thanx.tex}
--- a/paper/source/MulticastIncrement.java Wed Feb 04 15:44:15 2015 +0900 +++ b/paper/source/MulticastIncrement.java Wed Feb 04 19:10:32 2015 +0900 @@ -1,4 +1,4 @@ -public class MulticastIncrement extends CodeSegment { +public class ReceiverTask extends CodeSegment { private Receiver num = ids.create(CommandType.TAKE);
--- a/paper/source/MulticastStartCodeSegment.java Wed Feb 04 15:44:15 2015 +0900 +++ b/paper/source/MulticastStartCodeSegment.java Wed Feb 04 19:10:32 2015 +0900 @@ -1,15 +1,23 @@ -public class MulticastStartCodeSegment extends CodeSegment { +public class SenderTask extends CodeSegment { @Override public void run() { + // create multicast sender DataSegment.connectMulticast("multicast", "224.0.0.1", 10000, "en1", - SokcetType.Both); + SokcetType.Sender); + // create multicast receiver + DataSegment.connectMulticast("multicast1", + "224.0.0.2", + 10001, + "en1" + SocketType.Receiver); + new ReceiveMessage() - new MulticastIncrement(); - ods.put("multicast", "num", 0); + for (int i=1;i < 11; i++) + ods.put("multicast", "num", i); } }
--- a/paper/source/StartCodeSegment.java Wed Feb 04 15:44:15 2015 +0900 +++ b/paper/source/StartCodeSegment.java Wed Feb 04 19:10:32 2015 +0900 @@ -2,12 +2,10 @@ @Override public void run() { - System.out.println("run StartCodeSegment"); - new TestCodeSegment(); - System.out.println("create TestCodeSegment"); - - ods.update("local", "key1", "String data"); + + int count = 0; + ods.update("local", "cnt", count); } } \ No newline at end of file
--- a/paper/source/TestCodeSegment.java Wed Feb 04 15:44:15 2015 +0900 +++ b/paper/source/TestCodeSegment.java Wed Feb 04 19:10:32 2015 +0900 @@ -2,18 +2,18 @@ private Receiver input1 = ids.create(CommandType.TAKE); public TestCodeSegment() { - input1.setKey("local", "key1"); + input1.setKey("local", "cnt"); } @Override public void run() { - int num = input1.asInteger(); - System.out.println("data = " + num); + int count = input1.asInteger(); + System.out.println("data = " + count); - if (num == 10) + if (count == 10) System.exit(0); new TestCodeSegment(); - ods.update("local", "key1", ++num); + ods.update("local", "cnt", ++count); } } \ No newline at end of file