#
CORBAサーバーとクライアントとしてのgtk+アプリケーション
Tag(s):
CORBA
gtk+
CORBAサンプルを更新した。
サーバーは値を保持し,クライアントがincr(), decr()すると加算,減算する。クライアントはvalue()で値を取り出せる。
gtk+クライアントは,現在の値の表示と「加算」,「減算」ボタンを用意し,ボタンを押して値を変更する。
このサンプルのようにCORBAサーバーが裏方に徹している場合は,クライアントにgtk+をかぶせるのは容易い。クライアントから見ればサーバーはローカルにあるインスタンスと変わらない。
struct CounterSet
{
Counter_var counter;
GtkWidget* entry;
};
void on_incr(GtkButton* button, CounterSet* cset)
{
int r;
try {
cset->counter->incr();
r = cset->counter->value();
}
catch (...) {
printf("server lost.\n");
}
char buf[100];
sprintf(buf, "%d", r);
gtk_entry_set_text(GTK_ENTRY(cset->entry), buf);
}
on_incr()は「加算」ボタンを押したときに呼ばれる,gtk+シグナルのハンドラ。
CORBAサーバーをコンポーネントとしてgtk+アプリケーションに組み込む方法が分からない。gtk+/GNOMEにおけるコンポーネント技術としてbonoboがあるが,GNOMEのWebサイトにあるドキュメントを読んでも,OLE/COMコンポーネントの模倣というのは分かるが,どうも要領を得ない。