このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。
RFBDisplay はメッセージ処理の基底となるのだが、
今日は RFBDisplay の既定の実装について考えてみよう。
メイン処理に入ると、遠隔操作のモードとなる。
クライアントはマウスやキーボードから入力を行うと、
仮想画面(RFBDisplay)に何かしらの変化が起きる。
では、クライアントメッセージを見直し、
それぞれがどのような種類であり、
サーバにどのような変化をもたらすか調べてみよう。
0 - SetPixelFormat(通信画素形式の変更)
1 - FixColourMapEntries(通信画素形式の変更)
2 - SetEncodings(通信符号化方式の変更)
3 - FramebufferUpdateRequest(画面イベント)
4 - KeyEvent(画面イベント)
5 - PointerEvent(画面イベント)
6 - ClientCutText(クリップボードの変更)
変化の中には、通信に影響を与えるものもある。
0 ~ 2 は、通信内容に変化を与えるメッセージだ。
これらはクライアントに送信する画素に関する変更なので、
サーバが送る画素メッセージの形式に影響を与える。
そのため、その変更があったことを記憶しておく必要がある。
3 ~ 5 は入力イベントであるため、
基本的に無視してもよさそうである。
3 は画面を描画しなければならないが、
これは末端(具象クラス)が提供するものなので、
恐らく既定の実装は特に必要ない。
ただ、PointerEvent メッセージの所でも書いたが、
メッセージの渡され方によっては、
その状態を保存する必要があるかもしれない。
http://mixi.jp/view_diary.pl?id=312414139&owner_id=2300658
6 はクリップボードの変化なので、
無視しても通信内容に直接影響を与えることはないが、
サーバが貼り付け系処理をサポートする際に、
それを必要とする場合がある。
システムのクリップボードを使う必要はないので、
単にクリップボードの文字列を記憶しておくだけで良い。
だいたいの方針はこんなところかな。