# HG changeset patch # User Tatsuki IHA # Date 1455252412 -32400 # Node ID 11169ee81923eaaa89cc3080298efaa50efe3257 # Parent 6d39fe337ed6fe26ffc1daafbba08d3a3539c130 Add ServerChange thread and ERROR_ANNOUNCE Message diff -r 6d39fe337ed6 -r 11169ee81923 paper/images/shareScreenToMultiDisplay.graffle Binary file paper/images/shareScreenToMultiDisplay.graffle has changed diff -r 6d39fe337ed6 -r 11169ee81923 paper/images/shareScreenToMultiDisplay.pdf Binary file paper/images/shareScreenToMultiDisplay.pdf has changed diff -r 6d39fe337ed6 -r 11169ee81923 paper/main.pdf Binary file paper/main.pdf has changed diff -r 6d39fe337ed6 -r 11169ee81923 paper/main.tex --- a/paper/main.tex Thu Feb 11 01:34:20 2016 +0900 +++ b/paper/main.tex Fri Feb 12 13:46:52 2016 +0900 @@ -362,18 +362,16 @@ \chapter{TreeVNC の追加機能} \section{マルチディスプレイ対応} -画面配信側のPCがマルチディスプレイの場合、 -VNC サーバーからは複数の画面全体の画像データが送信されてしまう。 - +画面配信側のPCがマルチディスプレイの場合 VNC サーバーからは複数の画面全体の画像データが送信されてしまう。 授業やゼミ等でTreeVNCを使用する場合、複数画面の表示は必要ない。 そこで、画面を共有する際、ディスプレイを選択させ、画面共有を行う機能を追加した。 ディスプレイの情報は個々のクライアントでしか取得ができない。 -そのため、配信側は画面の切替を行う際に、ディスプレイを選択し、そのディスプレイの左上と右下の座標を取得する。 +そのため、配信側は画面の切り替えを行う際に、ディスプレイを選択し、そのディスプレイの左上と右下の座標を取得する。 その座標を Root Node への画面切り替えを要求する SERVER\_CHANGE\_REQUEST メッセージに付加させる。 Root Node は 配信側の VNC サーバー に画像データを要求する FRAMEBUFFER\_UPDATE\_REPLY メッセージに送信された座標を付加する。 VNC サーバーは要求された座標内の画像データを FRAMEBUFFER\_UPDATE メッセージで Root Node に送信する。 -これにより、一画面のみの表示が可能となる。 +これにより、一画面のみの表示が可能になる。 図\ref{fig:multidisplay} は Display1 のみを画面共有する例を示している。 @@ -385,8 +383,26 @@ \label{fig:multidisplay} \end{figure} +\section{画面切り替えの安定化} +画面切り替えを行う際、 配信中の画面を停止した後に画面の切り替え処理を実行していた。 +しかし、 切り替え先の VNC サーバーへの接続に時間がかかったり、 切り替え先の設定ミスなどで画面の切替がスムーズに行えない場合があった。 + +そこで、 画面切り替えを行う際に新しく切り替え用のスレッドを生成し処理する変更を行った。 +Root Node は SERVER\_CHANGE\_REQUEST を受け取ると、 配信状態を維持したまま、画面切り替え用に新しくスレッドを生成する。 +切り替え用のスレッドは切り替えに必要なデータの設定、 VNC サーバー への接続など通常の切り替え処理を実行する。 +切り替えが完了した後に、 現在配信中の画面を停止し、画面の切替を行う。 +切り替え用のスレッドを用意することで、配信状況を維持したままスムーズな画面切り替えが可能になった。 + \section{ネックになっているノードへの対処} -\section{別 Thread での画面切り替え} + +\section{クライアントへのエラー通知} +TreeVNC には接続しているクライアントへのエラーの通知を行うことが出来なかった。 +そのため、 画面切り替えを行う際に切り替え先が VNC サーバーの共有設定をしていない場合 Root Node に接続エラーのダイアログが表示されるという実装になっており、切り替えを行ったクライアントには通知されていなかった。 + +この問題を解決するために新しくERROR\_ANNOUC というメッセージを追加した。 +ERROR\_ANNOUCE メッセージは Root Nodeから木構造を辿りながら末端の Node に通信を行うメッセージで、エラー通知したいクライアントの ID と エラー内容の文字列を付加して送信する。 +付加したIDに一致するクライアントがメッセージを受け取ると、 付加されたエラーの文字列をダイアログで表示する。 +エラー通知用のメッセージを追加することで、 各々のクライアントに対して通知を行うことが可能になった。 \chapter{TreeVNC の評価} \section{画像データ伝達の遅延} @@ -398,9 +414,8 @@ TreeVNC には最大で17名が接続していた。 \section{メッセージを使用した実測} -TreeVNC を伝搬するメッセージに、CHECK\_DELAY,CHECK\_DELAY\_REPLYを追加した。 -CHECK\_DELAY は Root Node から 末端の Node まで伝達するメッセージと画像データ、 -CHECK\_DELAY\_REPLY は各 Node から Root Node まで伝達するメッセージである。 +TreeVNC を伝搬するメッセージに、CHECK\_DELAY, CHECK\_DELAY\_REPLYを追加した。 +CHECK\_DELAY は Root Node から 末端の Node まで伝達するメッセージと画像データ、 CHECK\_DELAY\_REPLY は各 Node から Root Node まで伝達するメッセージである。 CHECK\_DELAY メッセージは送信時刻を付けて送信する。 Root Nodeから CHECK\_DELAY 送信し、末端の Node まで各 Node を伝いながら伝達して行く。 diff -r 6d39fe337ed6 -r 11169ee81923 thesis.mm --- a/thesis.mm Thu Feb 11 01:34:20 2016 +0900 +++ b/thesis.mm Fri Feb 12 13:46:52 2016 +0900 @@ -65,7 +65,9 @@ - + + +