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()等)で領域を獲得します。
目次
索引
![]() ![]() |