| Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) |
目次
索引
![]()
|
| 第4章 アプリケーションの開発(C言語) | > 4.8 データ型に対するマッピング |
動的起動インタフェース(DII)、または動的スケルトンインタフェース(DSI)を使用して動的にパラメタを作成する方法について説明します。
パラメタはCORBA_NVList_add_item()で設定します。
サーバアプリケーションにinパラメタを渡す場合、クライアントアプリケーションでパラメタ領域を獲得し、そのポインタをCORBA_NVList_add_item()の第4パラメタに指定します。
CORBA_NVList_add_item(
arg_list,
name, /* IDLで指定したパラメタの名前を設定します。 */
type, /* パラメタのTypeCodeを設定します。 */
¶m, /* パラメタ領域のポインタを設定します */
sizeof( CORBA_long ), /* パラメタのサイズを設定します */
CORBA_ARG_IN, /* CORBA_ARG_INを設定します */
&env );
獲得した領域は、使用しなくなった時点で解放します。
サーバアプリケーションの処理結果をoutパラメタで受け取る場合、 CORBA_NVList_add_item()は以下のように指定します。
CORBA_NVList_add_item(
arg_list,
name, /* IDLで指定したパラメタの名前を設定します。 */
type, /* パラメタのTypeCodeを設定します。 */
NULL, /* NULLを設定します */
0, /* 0を設定します */
CORBA_ARG_OUT, /* CORBA_ARG_OUTを設定します */
&env );
サーバアプリケーションから渡されたデータの領域は、CORBA_NVList_free()で解放します。
サーバアプリケーションにinoutパラメタを渡す場合、クライアントアプリケーションでパラメタ領域を獲得し、そのポインタをCORBA_NVList_add_item()の第4パラメタに指定します。また、第6パラメタ(item_flag)にCORBA_IN_COPY_VALUEを指定します。
CORBA_NVList_add_item(
arg_list,
name, /* IDLで指定したパラメタの名前を設定します。 */
type, /* パラメタのTypeCodeを設定します。 */
¶m, /* パラメタ領域のポインタを設定します */
sizeof( CORBA_long ), /* パラメタのサイズを設定します */
CORBA_ARG_INOUT | /* CORBA_ARG_INOUT | CORBA_IN_COPY_VALUEを設定します */
CORBA_IN_COPY_VALUE,
&env );
サーバアプリケーションから渡されたデータ領域は、CORBA_NVList_free()で解放します。
サーバアプリケーションの処理結果を復帰パラメタで受け取った後、パラメタ領域はCORBA_Request_delete()で解放します。
クライアントアプリケーションからinパラメタを受け取る場合、パラメタ領域の獲得/解放を行う必要はありません。CORBA_NVList_add_item()は以下のように指定します。
CORBA_NVList_add_item(
arg_list,
name, /* IDLで指定したパラメタの名前を設定します。 */
type, /* パラメタのTypeCodeを設定します。 */
NULL, /* NULLを設定します */
0, /* 0を設定します */
CORBA_ARG_IN, /* CORBA_ARG_INを設定します */
&env );
サーバアプリケーションの処理結果をoutパラメタでクライアントアプリケーションに渡す場合、各データ領域獲得関数(CORBA_long_alloc()等)で領域を獲得し、そのポインタをCORBA_NVList_add_item()の第4パラメタに指定します。
CORBA_NVList_add_item(
arg_list,
name, /* IDLで指定したパラメタの名前を設定します。 */
type, /* パラメタのTypeCodeを設定します。 */
¶m, /* パラメタ領域へのポインタを設定します */
sizeof( CORBA_long ), /* パラメタのサイズを設定します */
CORBA_ARG_OUT, /* CORBA_ARG_OUTを設定します */
&env );
獲得した領域は、CORBAサービス内でリクエスト復帰後に解放されます。
クライアントアプリケーションからinoutパラメタを受け取る場合には、パラメタ領域の獲得/解放を行う必要はありません。CORBA_NVList_add_item()は以下のように指定します。
CORBA_NVList_add_item(
arg_list,
name, /* IDLで指定したパラメタの名前を設定します。 */
type, /* パラメタのTypeCodeを設定します。 */
NULL, /* NULLを設定します */
0, /* 0を設定します */
CORBA_ARG_INOUT, /* CORBA_ARG_INOUTを設定します */
&env );
サーバアプリケーションの処理結果をinoutパラメタでクライアントアプリケーションに渡す場合は、以下のようにします。
inoutパラメタの領域は、リクエスト復帰後にスケルトンで解放されます。
サーバアプリケーションの処理結果を復帰パラメタ渡す場合、データ域獲得関数(CORBA_long_alloc()等)で領域を獲得します。
目次
索引
![]()
|