# HG changeset patch # User Yu Taninari # Date 1330002714 -32400 # Node ID 53afd895a3673804d2d067ee9411d41aa7711cfc # Parent 92a06963b6a948916138c0c4a3ff9cfef9ba8794 change chapter4.tex diff -r 92a06963b6a9 -r 53afd895a367 paper/chapter4.tex --- a/paper/chapter4.tex Thu Feb 23 22:04:15 2012 +0900 +++ b/paper/chapter4.tex Thu Feb 23 22:11:54 2012 +0900 @@ -20,6 +20,43 @@ TreeVNCはTightVNCのjava版のビューアを元に作成を行った。実装の細かい内容は以下で説明する。TreeVNCはTightVNCのjava版のビューアを元に作成を行った。 +\newpage +\section{木の生成} +今回は、ホストに対しクライアントがツリー状に繋がっていくように実装した。ツリー\\ +の構成は以下の手順で行う。 + \begin{enumerate} + \item クライアントが接続する際、ホストに接続をしているプロキシ(今後このプロ\\ +キシのことをTopと記述する)に接続する。 + \item Topはクライアントにどこに接続すれば良いかを知らせる。 + \item クライアントはTopから指定されたノードに接続を行う。 + \end{enumerate} +\subsection{Topの仕事} +Topはjava.util.LinkedListでクライアントの情報を保持している。 + +TopはtreeBranch(木の分木数)を定数で持っていて +クライアントが接続してくるごとにcounterをインクリメントしていき +LinkedListの(counter - 1)/treeBranche番目に入っている親の情報を +接続してきたクライアントに教えることで木を構成することができる。 +\newpage +\section{木の再構成} +\newpage +\section{クライアントとの通信} +TreeVNCは、受け取った画面の描画データをそのまま自分に繋がっている次のクライアン\ +トに送信する。 +描画データを受け取ったクライントはまた次のクライアントへデータをそのまま送信す\\ +る。 +内部では、まず受け取った描画データの読み込みを先に行いBytebufferでコピーを行う\\ +。 +次にクライアントへの送信と自身のビューアへの描画を並列に行う。 + +\subsection{FramebufferrUpdate} +RFB プロトコルでの画面の描画の更新は、FramebufferUpdateで行われる。 +FramebufferUpdateを受け取ることで画面の再描画が行われる。 +FrameBufferUpdateでは、メッセージタイプと画面の矩形の数がまず送られ、 +次にx座標、y座標、横幅、縦幅、エンコードのタイプ、描画データが矩形の数だけ送ら\\ +れてくる。 +描画データはエンコードのタイプに従った方法で送られてくる。 + \subsection{MulticastQueue} 画面が更新された際に更新をクライアントに伝えなければならない。ノードが多数ある場合、一人一人に更新を知らせるのではなく、同時に画面の更新を知らせたい。 同時に更新を知らせるために、CountDownLatchを用いてMultiCastQueueを作成した。 diff -r 92a06963b6a9 -r 53afd895a367 paper/thesis-paper.tex --- a/paper/thesis-paper.tex Thu Feb 23 22:04:15 2012 +0900 +++ b/paper/thesis-paper.tex Thu Feb 23 22:11:54 2012 +0900 @@ -50,7 +50,7 @@ \input{chapter4.tex} % 設計 -\input{chapter5.tex} +%\input{chapter5.tex} % 今後の課題 %\input{chapter5.tex}