Mercurial > hg > Papers > 2015 > oc-thesis
diff chapter4.tex @ 4:14e96778c600
update
author | oc |
---|---|
date | Mon, 16 Feb 2015 01:03:14 +0900 |
parents | 63ae5aaa2a7a |
children | f6b14e3b72e0 |
line wrap: on
line diff
--- a/chapter4.tex Sat Feb 14 14:25:36 2015 +0900 +++ b/chapter4.tex Mon Feb 16 01:03:14 2015 +0900 @@ -23,6 +23,7 @@ 指定した幅・高さの画面サイズのみを配信することができる。 起動方法をソースコード\ref{fixsize}に記述する。 +% あとでコメントアウトはずす \begin{lstlisting}[caption=オプション--fixSize,label=fixsize] $ java -jar TreeVNC.java -d --fixSize 1920 1080 \end{lstlisting} @@ -48,6 +49,7 @@ そこで、一画面のみをフィルタリングし表示するためのオプション機能(${\mathchar`-}$${\mathchar`-}$filterSingleDisplay)を追加した。 オプションを追加した起動方法をソースコード\ref{filtersingledisplay}に記述する。 +% あとでコメントアウトはずす \begin{lstlisting}[caption=オプション--filterSingleDisplay,label=filtersingledisplay] $ java -jar TreeVNC.java -d --filterSingleDisplay \end{lstlisting} @@ -74,33 +76,136 @@ さらに VNCServer から送信されてきた全画面データをそのまま node に流すのではなく、 シングルディスプレイサイズの領域の更新部分のみを root 側でフィルタリングし流す。 +これにより、一画面のみの表示が可能となる。 -これにより、一画面のみの表示が可能となる。 + +\section{Retina のマルチディスプレイ対応} +Retina ディスプレイ等の高解像度ディスプレイには、 +より画素密度を高く表示する HiDPI (High-dot per inch) モードがある。 +HiDPI モードの場合、 +PC で設定する解像度に対して縦横2倍の画像データを表示している。 +TreeVNC でシングルディスプレイサイズを取得すると PC で設定する解像度のサイズになるが、 +VNCServer から送信される画像データサイズは解像度の2倍のサイズになる。 + +マルチディスプレイ対応のためには、 +シングルディスプレイサイズを VNCServer から送信される画像データサイズに合わせなければならない。 +そこで、HiDPI モードであるかどうかを検知する必要がある。 + +VNCServer は、接続されているディスプレイサイズを合わせて画像データを送信してくる。 +HiDPI モードであるかどうかを検知には、1枚目以降のディスプレイサイズが必要となる。 + +以下に、HiDPI モードの取得方法を記述する。 + +\begin{itemize} + \item VNCServer から送信される width は図\ref{fig:singledisplaywidth}の VNCServer Single width である + \item VncServer Single width から、図\ref{fig:singledisplaywidth}の 2nd Single width を引く + \item 余りのサイズが取得してきた図\ref{fig:singledisplaywidth} Single width の2倍であれば、HiDPI モードである +\end{itemize} + +HiDPI モードの場合、originaiInitData を取得してきたシングルディスプレイの2倍サイズで生成する。 +この方法を用いて、HiDPI モードでもマルチディスプレイ対応ができた。 + +\begin{figure}[htpd] + \begin{center} + \includegraphics[scale=0.6]{./images/chapter4/singleDisplayWidth.pdf} + \end{center} + \caption{Single Display Width} + \label{fig:singledisplaywidth} +\end{figure} \newpage -\section{Retina のマルチディスプレイ対応} - +\section{遠隔地からの接続} +遠隔地からでもゼミや授業に参加できるよう、 +異なるネットワークインタフェースから TreeVNC への接続を可能にした。 - - -\section{遠隔地からの接続} +遠隔地からの接続を実現した TreeVNC を図\ref{fig:remotetreevnc}に示す。 +図\ref{fig:remotetreevnc}では、 +ネットワーク A で立ち上げた TreeVNC に対し、 +遠隔地のネットワーク B, C, D から接続している状態である。 +図の様に、各ネットワーク毎に TreeManager を持つ root node が存在する。 +TreeManager を持つ node は、そのネットワーク上での接続の木構造を管理する root となる。 +遠隔地ネットワークから直接 TreeVNC に接続した node は root となる。 \begin{figure}[htpd] \begin{center} - \includegraphics[scale=0.4]{./images/chapter4/remotenetwork.pdf} + \includegraphics[scale=0.6]{./images/chapter4/remoteTreeVnc.pdf} + \end{center} + \caption{Remote Network Tree} + \label{fig:remotetreevnc} +\end{figure} + +\newpage + +以下に、遠隔地からの接続の手順を記述する。 + +\begin{itemize} + \item 遠隔地 node から接続したい root に対して接続を要求する WHERE\_TO\_CONNECT message を送信する(図\ref{fig:remotevncconnect}中, 1:) + \item root は、遠隔地 node に対して接続先を含む CONNECT\_TO message を送信する(図\ref{fig:remotevncconnect}中, 2:) + \item 遠隔地 node は指定された接続先に対して接続しに行く(図\ref{fig:remotevncconnect}中, 3:) +\end{itemize} + +\begin{figure}[htpd] + \begin{center} + \includegraphics[scale=0.7]{./images/chapter4/remoteVncConnect.pdf} + \end{center} + \caption{遠隔地 node からの接続} + \label{fig:remotevncconnect} +\end{figure} + +ネットワーク毎に TreeVNC の木構造は管理される。 +図\ref{fig:remotenetworktree1}の TreeVNC の木構造はバイナリツリーを形成している。 +しかし、遠隔地 node が接続している node には合計3つ node が接続している。 +遠隔地 node は、root の管理する nodeList に追加されない。 +これは、node の接続・切断・切り替えに遠隔地 node を関与させないためである。 + +ネットワーク毎に root が存在する。 +root は同じネットワーク上の新しい node からの +接続を受け付ける(図\ref{fig:remotenetworktree1}中, 1,2,1',2':)。 + +\newpage + + +\begin{figure}[htpd] + \begin{center} + \includegraphics[scale=0.7]{./images/chapter4/remotenetwork.pdf} \end{center} \caption{Remote Network Tree} \label{fig:remotenetworktree1} \end{figure} + +遠隔地 node からでも、画面を配信できるようにする。 +遠隔地 node から画面配信を行う場合の画面の切り替えを図\ref{fig:remotenetworktree2}、図\ref{fig:remotenetworktree5}に示す。 +以下に、画面切り替えの説明を記述する。 + +\begin{itemize} + \item 遠隔地 node が親 node へと SERVER\_CHANGE\_REQUEST を送信する(図\ref{fig:remotenetworktree2}中, 1:) + \item SERVER\_CHANGE\_REQUEST には、id が付いており、遠隔地 node からであれば -1 が付加されている + \item SERVER\_CHANGE\_REQUEST は root へと送信される(図\ref{fig:remotenetworktree2}中, 2:) + \item root は SERVER\_CHANGE\_REQUEST の id を確認し、id = -1 の場合、遠隔地 root に対して WHERE\_TO\_CONNECT を送信する(図\ref{fig:remotenetworktree2}中, 3:) + \item 遠隔地 root は WHERE\_TO\_CONNECT の返信として、接続先を含む CONNECT\_TO を送信する(図\ref{fig:remotenetworktree5}中, 4:) + \item root は指定された接続先へと接続しに行く(図\ref{fig:remotenetworktree5}中, 5:) +\end{itemize} + + + + + \begin{figure}[htpd] \begin{center} - \includegraphics[scale=0.4]{./images/chapter4/remotenetwork2.pdf} + \includegraphics[scale=0.7]{./images/chapter4/remotenetwork2.pdf} \end{center} \caption{Remote Network Tree} \label{fig:remotenetworktree2} \end{figure} +\begin{figure}[htpd] + \begin{center} + \includegraphics[scale=0.7]{./images/chapter4/remotenetwork5.pdf} + \end{center} + \caption{Remote Network Tree} + \label{fig:remotenetworktree5} +\end{figure}