リソースと識別子
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/19 17:13 UTC 版)
「X Window System コアプロトコル」の記事における「リソースと識別子」の解説
ウィンドウ、ピクスマップ、フォントなどに関するデータは全てサーバに格納されている。クライアントはそれらオブジェクトの識別子を知っており、サーバにそれらについて要求する際に名前として使用する。例えば、クライアントがウィンドウを生成したいとき、サーバに対して識別子を指定してウィンドウ生成を要求する。その識別子は後で、例えばウィンドウの描画時などクライアントからの要求で使用される。以下のオブジェクトはサーバ側にあり、識別子を使ってクライアントから指定される。 Window(ウィンドウ) Pixmap(ピクスマップ) Font(フォント) Colormap (色表、後述) Graphic context(グラフィックコンテキスト) これらのオブジェクトを「リソース; resources」と呼ぶ。クライアントがこのようなリソースの生成を要求する場合、その識別子を常に指定する。例えば、新しいウィンドウを生成する場合、クライアントはそのウィンドウの属性(親、幅、高さなど)とウィンドウに関連付ける識別子を指定する。 識別子は32ビット整数であり、最上位ビットから3ビットは常にゼロとされる。クライアントごとに識別子の集合を持ち、新しいリソース生成時に使用する。この集合はサーバがコネクションの受理を知らせるパケット内で、2つの整数としてクライアントに通知される。クライアントは指定された範囲から、重ならないように識別子を選択して使う。ウィンドウ、ピクスマップ、フォント、カラーマップ、グラフィックコンテキストについて、2つのオブジェクトが同じ識別子を持つことはできない。 あるリソースが生成されると、その識別子をクライアントが使い、サーバに対してそのリソースに関する何らかの操作を要求するときに指定する。操作には、リソースを変化させるもの(例えば、ウィンドウを移動させる要求)と、サーバからそのリソースに関するデータを得るもの(例えば、ウィンドウの属性を要求する場合)がある。 識別子はクライアント内だけでなく、サーバ内で一意である。例えば、2つのウィンドウがそれぞれ別のクライアントが生成したものであっても、同じ識別子を持つことはない。クライアントは識別子さえ指定できれば、任意のオブジェクトにアクセスでき、例えば別のクライアントが生成したリソースも識別子が分かっていればアクセスできる(サーバから与えられた範囲外の識別子をサーバへの要求パケットに指定可能である)。 結果として、同じサーバに接続された2つのクライアントがあるとき、識別子によって一意にリソースが指定される。例えば、あるクライアントが識別子 0x1e00021 のウィンドウを生成し、その番号 0x1e00021 を別のアプリケーションに渡したとする(手段は何でも良い。例えば、ファイルに番号を書き込み、それを別のアプリケーションが読むという方法でもよい)。すると、その別のアプリケーションが同じウィンドウに対して操作可能となる。これは例えば Ghostviewの X 版で利用されている。Ghostview はサブウィンドウを生成し、その識別子を環境変数にセットして Ghostscript を呼び出す。Ghostscript は PostScript ファイルの内容をそのウィンドウに描画する。 リソースは、それを生成したクライアントがサーバとのコネクションをクローズしたときに正常に削除(破壊)される。ただし、コネクションをクローズする前にクライアントから破壊を要求することもできる。
※この「リソースと識別子」の解説は、「X Window System コアプロトコル」の解説の一部です。
「リソースと識別子」を含む「X Window System コアプロトコル」の記事については、「X Window System コアプロトコル」の概要を参照ください。
- リソースと識別子のページへのリンク