(1)パラメタリストの生成
CORBA_ORB_create_list()により、サーバアプリケーションに渡すパラメタを格納するための領域を保持するリストオブジェクト(NVListオブジェクト)を生成します。このとき、何個のパラメタを格納するかを指定します。結果として、リストオブジェクトのオブジェクトリファレンスが返されます。NVListオブジェクトインタフェースの詳細については、“12.2 NVListオブジェクト”を参照してください。
CORBA_OperationDescription *opr_description; /* パラメタ情報の構造体 */ CORBA_any *tmp_any; /* ワーク用 */ CORBA_ParDescriptionSeq *params; /* パラメタ情報 */ CORBA_NVList arg_list; /* リストオブジェクト */ /* Contained_Description構造体から構造体の抽出 */ tmp_any = &description->value; opr_description = (CORBA_OperationDescription *)tmp_any->_value; /* パラメタ情報の抽出 */ params = &opr_description->parameters; /* リストオブジェクトの生成 */ CORBA_ORB_create_list( orb, params->_length, &arg_list, &env );
(2)パラメタリストの設定
CORBA_NVList_add_item()により、サーバアプリケーションに渡すパラメタをリストオブジェクトに設定します。パラメタとして、CORBA_NVListオブジェクトリファレンス、サーバアプリケーションのパラメタの名前、型、値および長さを設定します。
CORBA_NVList_add_item()を用いてパラメタ情報をリストオブジェクトに設定する順番は、IDL定義に従う必要があります。IDL定義において、メソッドの第1引数がinパラメタ、第2引数がoutパラメタ、第3引数がinoutパラメタの場合、inパラメタ、outパラメタ、inoutパラメタの順番でリストオブジェクトに設定しなければなりません。
パラメタの設定方法の詳細については、“データ型に対するマッピング”の“8.2.8 動的インタフェースでのパラメタの獲得/解放”を参照してください。
CORBA_long a,b; /* パラメタの設定 */ CORBA_NVList_add_item( arg_list, /* リストオブジェクト */ params->_buffer[0].name, /* パラメタ名 */ TC_long, /* パラメタの型 */ &a, /* パラメタの値 */ sizeof( CORBA_long ), /* パラメタの長さ */ CORBA_ARG_IN, /* パラメタのタイプ(in,out,inout) */ &env); CORBA_NVList_add_item( arg_list, /* リストオブジェクト */ params->_buffer[1].name, /* パラメタ名 */ TC_long, /* パラメタの型 */ &b, /* パラメタの値 */ sizeof( CORBA_long ), /* パラメタの長さ */ CORBA_ARG_IN, /* パラメタのタイプ(in,out,inout) */ &env);