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