18.6.1 入力パラメタを処理する
AccountManagerImplオブジェクトのinvokeメソッドがオペレーション要求の入力パラメタを処理するために使用する手順は,次のとおりです。
-
オペレーション用のパラメタリストを保持するNVListを生成します。
-
予期されるパラメタごとにAnyオブジェクトを生成し,TypeCodeとパラメタ型(ARG_IN,ARG_OUT,ARG_INOUTのどれか)を設定してNVListに追加します。
-
ServerRequestオブジェクトのargumentsメソッドを起動してNVListを引き渡し,リスト内のすべてのパラメタの値を更新します。
openメソッドはアカウント名パラメタを予期しているので,ServerRequest内のパラメタを入れるNVListオブジェクトが生成されます。NVListクラスは,一つ以上のNamedValueオブジェクトが入っているパラメタリストをインプリメントします。NVListクラスとNamedValueクラスについては,「17. 動的起動インタフェースの使用」を参照してください。
アカウント名を入れるAnyオブジェクトが生成されます。このAnyは,引数名を「name」,パラメタ型をARG_INに設定してNVListに追加されます。
NVListが初期化されたあと,リスト内のすべてのパラメタ値を取得するために,ServerRequestオブジェクトのargumentsメソッドが呼び出されます。
- 注
-
argumentsメソッドを呼び出したあと,NVListはVisiBroker ORBに所有されます。したがって,オブジェクトインプリメンテーションがNVList内のARG_INOUTパラメタを変更すると,その変更はVisiBroker ORBにも自動的に認識されます。このNVListを呼び出し側で解放してはなりません。
入力引数用にNVListを構築する代わりに,VisiBroker ORBオブジェクトのcreate_operation_listメソッドを使用することもできます。このメソッドはOperationDefオブジェクトを受け取り,必要なすべてのAnyオブジェクトを使用して完全に初期化されたNVListオブジェクトを返します。適切なOperationDefオブジェクトは,「16. インタフェースリポジトリの使用」で説明したIRから取得できます。