# HG changeset patch # User Nobuyasu Oshiro # Date 1312883045 -32400 # Node ID e430ee57ac15ee5846dcf36f1f7abcbed5502a16 # Parent 900aa574953a573f3c84ba1a6171a7eacc708134 write FramebufferUpdate diff -r 900aa574953a -r e430ee57ac15 yuu-jssst.pdf Binary file yuu-jssst.pdf has changed diff -r 900aa574953a -r e430ee57ac15 yuu-jssst.tex --- a/yuu-jssst.tex Tue Aug 09 14:07:38 2011 +0900 +++ b/yuu-jssst.tex Tue Aug 09 18:44:05 2011 +0900 @@ -156,16 +156,36 @@ \subsection{クライアントとの通信} +TreeVNCは、受け取った画面の描画データをそのまま自分に繋がっている次のクライアントに送信する。 +描画データを受け取ったクライントはまた次のクライアントへデータをそのまま送信する。 +内部では、まず受け取った描画データの読み込みを先に行いBytebufferでコピーを行い、 +次のクライアントへの送信と自身のViewerへの描画を並列に行っている。 +\subsubsection{FramebufferUpdate} +Rfb Protocol での画面の描画の更新は、FramebufferUpdate単位で行われる。 +FramebufferUpdateには更新を行う画面の矩形の数がまずヘッダーとして送られ、 +次にx座標、y座標、横幅、縦幅、エンコードのタイプ、描画データが1セットとなり矩形の数だけデータが送られてくる。 +描画データはエンコードのタイプにしたがった方法で送られてくる。 + + +\subsubsection{描画データの先読み} +FramebufferUpdateで送られてきた描画データの先読みはエンコードタイプによって +例えば、RAWエンコードで + + +\begin{figure}[!htbp] +\begin{center} +\includegraphics[scale = 0.5]{fig/multicastqueue.eps} +\end{center} +\caption{ +Vnc server(Parent)から受け取ったデータを自身に繋がっているクライアントへ送信する。クライアントは次のクライアント +へデータを送信する。 +} +\label{figure:splaying} +\end{figure} -\subsubsection{FramebufferUpdate} -Rfb Protocol での画面の描画の更新は、FramebufferUpdateという通信を受け取り行う。 -FramebufferUpdateには - - -\subsubsection{FramebufferUpdateの先読み} @@ -174,15 +194,6 @@ 同時に更新を知らせるために、CountDownLatchを用いてMultiCastQueueを作成した。 CountDownLatch一回CountDownされたときに待機しているスレッドを解放するように宣言する。更新情報が来るまでawaitを用いてスレッドを待機させる。更新情報が来たときCountDownを行う。すると、スレッドが開放されるので同時に更新情報を参照することができる。 -\begin{figure}[!htbp] -\begin{center} -\includegraphics[scale = 0.5]{fig/multicastqueue.eps} -\end{center} -\caption{ - -} -\label{figure:splaying} -\end{figure}