Requestの引数はNVListオブジェクトで表現されます。このオブジェクトは名前・値のペアをNamedValueオブジェクトとして格納します。このリストのポインタを取得するには,argumentsメソッドを使用します。そのあと,このポインタを使用して個々の引数の名前と値を設定できます。
このクラスは,メソッド起動用の引数を表すNamedValueオブジェクトのリストをインプリメントします。リスト内のオブジェクトの追加,削除,および照会を行うメソッドが提供されます。
class NVList {
public:
. . .
CORBA::Long count() const;
CORBA::NamedValue_ptr add(CORBA::Flags flags);
CORBA::NamedValue_ptr add_item(
const char *name, CORBA::Flags flags);
CORBA::NamedValue_ptr add_value(
const char *name,
const CORBA::Any *any,
CORBA::Flags flags);
CORBA::NamedValue_ptr add_item_consume(
char *name, CORBA::Flags flags);
CORBA::NamedValue_ptr add_value_consume(
char *name,
CORBA::Any *any,
CORBA::Flags flags);
CORBA::NamedValue_ptr item(CORBA::Long index);
CORBA::Status remove(CORBA::Long index);
. . .
};
package org.omg.CORBA;
public abstract class NVList {
public int count();
public org.omg.CORBA.NamedValue add(int flags);
public org.omg.CORBA.NamedValue add_item(
java.lang.String name, int flags);
public org.omg.CORBA.NamedValue add_value(
java.lang.String name,
org.omg.CORBA.Any value,
int flags
);
public org.omg.CORBA.NamedValue item(int index);
public void remove(int index);
}
このクラスは,メソッド起動リクエストの入出力両用の引数を表す名前・値のペアをインプリメントします。NamedValueクラスは,クライアントプログラムへ返すリクエストの結果を表すために使用することもできます。nameプロパティは単なる文字列であり,valueプロパティはAnyクラスによって表されます。コードサンプル17-12にNamedValueクラスの例(C++),およびコードサンプル17-13にNamedValueクラスの例(Java)を示します。
class NamedValue{
public:
const char *name() const;
CORBA::Any *value() const;
CORBA::Flags flags() const;
};
package org.omg.CORBA;
public abstract class NamedValue {
public java.lang.String name();
public org.omg.CORBA.Any value();
public int flags();
}
表17-1は,NamedValueクラスのメソッドの説明です。
表17-1 NamedValueのメソッド
メソッド | 説明 |
---|---|
name | 項目名のポインタを返します。このポインタを使用して名前を初期化できます。 |
value | 項目の値を表すAnyオブジェクトのポインタを返します。このポインタを使用して値を初期化できます。詳細については,「17.3.9 Anyクラスを使用して型を保護した状態で引き渡す」を参照してください。 |
flags | この項目が入力引数,出力引数,入出力両用の引数のどれであるかを示します。項目が入出力両用の引数である場合は,VisiBroker ORBが引数のコピーを作成して呼び出し側のメモリをそのまま残すように指示するフラグを指定できます。次のフラグがあります。
|