| Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) |
目次
索引
![]()
|
| 付録F 動的スケルトンインタフェースのプログラミング | > F.2 C++言語の開発 |
動的スケルトンインタフェースを使用して動的にパラメタを作成する方法について説明します。
パラメタはCORBA::NVList::add_value()を使用して設定します。
クライアントアプリケーションからinパラメタを受け取る場合、パラメタ領域の獲得/解放を行う必要はありません。add_value()は以下のように指定します。
CORBA::Any p1( ((*params)[0])->type, &i, CORBA_TRUE );
arg_list->add_value(
name, /* IDLで指定したパラメタの名前を設定します */
p1, /* inで使用する値を設定したAny型を設定します */
CORBA::ARG_IN, /* CORBA::ARG_INを設定します */
*env );
サーバアプリケーションの処理結果をoutパラメタで渡す場合、データ域獲得関数(CORBA::long_alloc()等)で領域を獲得し、そのポインタをadd_value()の第2パラメタに指定します。
CORBA::Any *p2 = new CORBA::Any( ((*params)[1])->type, &i, CORBA_TRUE );
arg_list->add_value(
name, /* IDLで指定したパラメタの名前を設定します */
*p2, /* outの値を設定するAny型を設定します */
CORBA::ARG_OUT, /* CORBA::ARG_OUTを設定します */
*env );
獲得した領域は、CORBAサービス内でリクエスト復帰後に解放されます。
クライアントアプリケーションからinoutパラメタを受け取る場合、パラメタ領域の獲得/解放を行う必要はありません。add_value()は以下のように指定します。
CORBA::Any *p3 = new CORBA::Any(( (*params)[2])->type, &i, CORBA_TRUE );
arg_list->add_value(
name, /* IDLで指定したパラメタの名前を設定します */
*p3, /* inoutの値を設定するAny型を設定します */
CORBA::ARG_INOUT, /* CORBA::ARG_INOUTを設定します */
*env );
サーバアプリケーションの処理結果をinoutでクライアントアプリケーションに渡す場合、以下のようにします。
inoutパラメタとして使用した領域は、リクエスト復帰後にスケルトンで解放されます。
サーバアプリケーションの処理結果を復帰パラメタ渡す場合、データ域獲得関数(CORBA::long_alloc()等)で領域を獲得します。
目次
索引
![]()
|