ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(CORBAサービス編)

8.2.8 動的インタフェースでのパラメタの獲得/解放

  動的起動インタフェース(DII)を使用して動的にパラメタを作成する方法について説明します。
  パラメタはCORBA_NVList_add_item()で設定します。


inパラメタ

  サーバアプリケーションにinパラメタを渡す場合、クライアントアプリケーションでパラメタ領域を獲得し、そのポインタをCORBA_NVList_add_item()の第4パラメタに指定します。

  CORBA_NVList_add_item(
        arg_list, 
        name,                        /* IDLで指定したパラメタの名前を設定します。 */
        type,                        /* パラメタのTypeCodeを設定します。 */
        &param,                      /* パラメタ領域のポインタを設定します */
        sizeof( CORBA_long ),        /* パラメタのサイズを設定します */
        CORBA_ARG_IN,                /* CORBA_ARG_INを設定します */
        &env );

  クライアントアプリケーションで獲得した領域は、使用しなくなった時点で解放します。


outパラメタ

  サーバアプリケーションの処理結果を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()でNVListクラスの領域を廃棄する際に自動的に解放されます。このため、NVListクラスの領域を解放した後、サーバアプリケーションから渡されたoutパラメタ領域を参照することはできません。NVListオブジェクトの解放については“8.2.7 リクエストの削除”を参照してください。


inoutパラメタ

  サーバアプリケーションにinoutパラメタを渡す場合、クライアントアプリケーションでパラメタ領域を獲得し、そのポインタをCORBA_NVList_add_item()の第4パラメタに指定します。

  CORBA_NVList_add_item(
        arg_list, 
        name,                        /* IDLで指定したパラメタの名前を設定します。 */
        type,                        /* パラメタのTypeCodeを設定します。 */
        &param,                      /* パラメタ領域のポインタを設定します */
        sizeof( CORBA_long ),        /* パラメタのサイズを設定します */
        CORBA_ARG_INOUT,             /* CORBA_ARG_INOUTを設定します */
        &env );

  クライアントアプリケーションで獲得したパラメタ領域は、リクエスト発行後、使用しなくなった時点で解放してください。
  サーバアプリケーションから渡されたデータ領域は、CORBA_NVList_free()でNVListクラスの領域を廃棄する際に自動的に解放されます。このため、NVListクラスの領域を解放した後、サーバアプリケーションから渡されたinoutパラメタ領域を参照することはできません。NVListオブジェクトの解放については“8.2.7 リクエストの削除”を参照してください。


復帰パラメタ

  サーバアプリケーションの処理結果を復帰パラメタで受け取る場合、クライアントアプリケーションで領域を獲得する必要はありません。
  サーバアプリケーションから渡されたデータ領域は、CORBA_Request_delete()でリクエストオブジェクトを削除する際に、自動的に解放されます。