Kデスクトップ環境

第 5章Kネーミング

TKDEネーミングサービス、Kネーミング はとても単純なサービスですが、非常に役に立ち、しかも場合によっては持続的な CORBA サーバに CORBA クライアントを接続させるのに大変素晴らしい解決策となります。

Kネーミングを使えば、CORBA オブジェクトに自由に選択可能な名称を付けることが出来ます。更に kded はシステム(セッション)全体で有効なため、オブジェクトは kded に接続できるどのクライアントに対しても利用可能になります。

ここで説明することはあまりありません :-} 。ですからknaming.h内の Kネーミング API をご覧になることを提案します。

kdelibs/corba/tutorials/kded にサンプルコードがあります。ここでは実際的な短いサ ンプルを紹介します :

バックグラウンドデスクトップアイコンを提供する素晴らしいアプリケーションである Kデスクトップ環境について考えてみましょう。これは CORBA を通していくつかの機能を提供します。何を言っているのかを知るために kdesktop.idl をご覧ください。Kデスクトップ環境の問題は : システム上このサービスを他のアプリケーションに対してどのように提供するか ? ということです。IOR をいくつかのファイルに書くというのは IMHO を完全に解決しているとはいえませんし、Kデスクトップ環境は kded ではなく、KDEスタートアップの startkde スクリプトで起動するため、Kアクティベータを使用するというのも無理です。ですからより良い方法を考え、Kデスクトップ環境に対して、Kネーミングにそのオブジェクトを登録させることにします。このことは次の行で行われています :
   1   ...
   2   KNaming *knaming = KdedInstance::self()->knaming();
   3   naming->bind( "KDesktop", kdesktop_object_here );
   4   ...
嘘をついていました ;) : Kネーミングは実際には"Kデスクトップ環境 "にではなく、"IDL:KDesktopIf:1.0"にバインドします。しかしネーミングに関しては約束ごとが無いために、IMHO という読みやすい名前にしました :-)。(David 気にしないでね :] )。私は個人的に、タグの付いたレポジトリ ID とは逆の人間が読みやすい名前が好きなのです ;)。

Kネーミング とKデスクトップ環境 に戻りましょう : 例えば kfmclient のようなどんなクライアントアプリケーションでも Kデスクトップ環境 に接続することができます。次のような感じになります :
   1   ..
   2   KNaming *knaming = KdedInstance::self()->knaming();
   3   ...
   4   CORBA::Object_var obj = knaming->resolve( "KDesktop" );
   5   KDesktopIf_var kdesky = KDesktopIf::_narrow( obj );
   6   kdesky->selectAll(); //let's confuse the user by selecting all icons ;-)
   7   ...