![]() |
![]() |
|
|
CORBA API
この章では、C++ と拡張 C++ でのコア・メンバ関数の BEA Tuxedo インプリメンテーションについて説明します。また、擬似オブジェクトとその C++ クラスとの関係についても説明します。擬似オブジェクトとは、ネットワーク経由で転送不可能なオブジェクト・リファレンスのことです。擬似オブジェクトはその他のオブジェクトと似ていますが、ORB によって所有されるため拡張ができません。
注記 この章の一部の情報は、Object Management Group (OMG) の「Common Object Request Broker: Architecture and Specification, Revision 2.4.2」(2001 年 2 月) から、OMG の許可を得て転載しています。
グローバル・クラス
次の BEA Tuxedo クラスは、スコープ内においてグローバルです。
上記のクラスには、BEA Tuxedo の開発で使用する定義済みの型、クラス、および関数が含まれています。
CORBA クラスには、CORBA で定義されている、オブジェクト・リクエスト・ブローカ (ORB) を使用する際に不可欠なクラス、データ型、およびメンバ関数があります。BEA Tuxedo の CORBA への拡張は、Tobj C++ クラスに含まれています。Tobj クラスには、BEA Tuxedo で CORBA への拡張として用意されているデータ型、入れ子になったクラス、およびメンバ関数があります。
BEA Tuxedo 製品で CORBA のデータ型とメンバ関数を使用するには、CORBA::
接頭辞が必要です。たとえば、Long
の場合は CORBA::Long
となります。同様に、BEA Tuxedo 製品で Tobj の入れ子になったクラスとメンバ関数を使用するには、Tobj::
接頭辞が必要です。たとえば、FactoryFinder の場合は Tobj::FactoryFinder
となります。
擬似オブジェクト
擬似オブジェクトは、CORBA クラス内部にあるローカル・クラスとして表されます。擬似オブジェクトおよび対応するメンバ関数の名前は、入れ子になったクラス構造で付けます。たとえば、ORB オブジェクトの場合は CORBA::ORB
、Current オブジェクトの場合は CORBA::Current
となります。
Any クラスのメンバ関数
ここでは、Any
クラスの各メンバ関数について説明します。
Any
メンバ関数の C++ へのマッピングは次のとおりです。
class CORBA
{
class Any
{
public:
Any ();
~
Any (const Any&);
Any (TypeCode_ptr tc, void *value, Boolean release =
CORBA_ FALSE);
Any ();
Any & operator=(const Any&);
void operator<<=(Short);
void operator<<=(UShort);
void operator<<=(Long);
void operator<<=(ULong);
void operator<<=(Float);
void operator<<=(Double);
void operator<<=(const Any&);
void operator<<=(const char*);
void operator<<=(Object_ptr);
void operator<<=(from_boolean);
void operator<<=(from_char);
void operator<<=(from_octet);
void operator<<=(from_string);
Boolean operator>>=(Short&) const;
Boolean operator>>=(UShort&) const;
Boolean operator>>=(Long&) const;
Boolean operator>>=(ULong&) const;
Boolean operator>>=(Float&) const;
Boolean operator>>=(Double&) const;
Boolean operator>>=(Any&) const;
Boolean operator>>=(char*&) const;
Boolean operator>>=(Object_ptr&) const;
Boolean operator>>=(to_boolean) const;
Boolean operator>>=(to_char) const;
Boolean operator>>=(to_octet) const;
Boolean operator>>=(to_object) const;
Boolean operator>>=(to_string) const;
TypeCode_ptr type()const;
void replace(TypeCode_ptr, void *, Boolean);
void replace(TypeCode_ptr, void *);
const void * value() const;
};
}; //CORBA
CORBA::Any::Any()
概要
Any
オブジェクトを作成します。
C++ バインディング
CORBA::Any::Any()
引数
特にありません。
説明
CORBA::Any
クラスのデフォルトのコンストラクタです。tc_null
型および値 0 (ゼロ) の TypeCode で Any
オブジェクトを作成します。
戻り値
特にありません。
CORBA::Any::Any(const CORBA::Any & InitAny)
概要
ほかの Any
オブジェクトのコピーである Any
オブジェクトを作成します。
C++ バインディング
CORBA::Any::Any(const CORBA::Any & InitAny)
引数
InitAny
CORBA::Any
を参照してコピーします。
説明
CORBA::Any
クラスのコピー・コンストラクタです。このコンストラクタは、渡される Any
の TypeCode リファレンスを複製します。
コピーする型は、コピー元の Any
オブジェクトの release
フラグによって決まります。release
が CORBA_TRUE
と評価された場合、コンストラクタはパラメータの値をディープ・コピーします。release
が CORBA_FALSE
と評価された場合、コンストラクタはパラメータの値をシャロー・コピーします。シャロー・コピーを使用すると、メモリの割り当てをより高度に制御できます。ただし、呼び出し側は、解放済みのメモリを Any
が使用していないことを確認する必要があります。
戻り値
特にありません。
CORBA::Any::Any(TypeCode_ptr TC, void * Value, Boolean Release)
概要
TypeCode および値で Any
オブジェクトを作成します。
C++ バインディング
CORBA::Any::Any(TypeCode_ptr TC, void * Value, Boolean Release)
引数
TC
作成する型を指定した、TypeCode 擬似オブジェクト・リファレンスへのポインタ。
Value
Any
オブジェクトの作成で使用するデータへのポインタ。この引数のデータ型は、指定された TypeCode と一致していなければなりません。
Release
Value
引数で指定されたメモリの所有権を Any
が想定するかどうかを指定します。Release
が CORBA_TRUE
の場合、Any
は所有権を想定します。Release
が CORBA_FALSE
の場合、Any
は所有権を想定しません。この場合、Value
引数が指すデータは、割り当て時または破棄時に解放されません。
説明
このコンストラクタは、型セーフでない Any
インターフェイスで使用されます。指定された TypeCode オブジェクト・リファレンスを複製してから、Any
オブジェクト内の値が指すデータを挿入します。
戻り値
特にありません。
CORBA::Any::~Any()
概要
Any
のデストラクタ。
C++ バインディング
CORBA::Any::
~Any()
引数
特にありません。
説明
このデストラクタは、Release
フラグが CORBA_TRUE
に指定されている場合に、CORBA::Any
が保持しているメモリを解放します。また、Any
に含まれる TypeCode 擬似オブジェクト・リファレンスも解放します。
戻り値
特にありません。
CORBA::Any & CORBA::Any::operator=(const CORBA::Any & InitAny)
概要
Any
の代入演算子。
C++ バインディング
CORBA::Any & CORBA::Any::operator=(const CORBA::Any & InitAny)
引数
InitAny
割り当てに使用するための Any
のリファレンス。割り当てで使用する Any
によって、Any
が Value
でメモリの所有権を想定するかどうかが決まります。Release
が CORBA_TRUE
の場合、Any
は所有権を想定して InitAny
引数の値をディープ・コピーします。Release
が CORBA_FALSE
の場合、Any
は InitAny
引数の値をシャロー・コピーします。
説明
これは、Any
クラスの代入演算子です。このメンバ関数のメモリ管理は、Release
フラグの現在の値によって決まります。また、Release
フラグの現在の値によって、現在のメモリが割り当て前に解放されるかどうかも決まります。現在の Release
フラグが CORBA_TRUE
の場合、Any
は保持していたすべての値を解放します。現在の Release フラグが CORBA_FALSE
の場合、Any
は保持していた値を解放しません。
戻り値
InitAny
のコピーを保持する Any
を返します。
void CORBA::any::operator<<=()
概要
型セーフな Any
の挿入演算子。
C++ バインディング
void CORBA::Any::operator<<=(CORBA::Short Value)
void CORBA::Any::operator<<=(CORBA::UShort Value)
void CORBA::Any::operator<<=(CORBA::Long Value)
void CORBA::Any::operator<<=(CORBA::Ulong Value)
void CORBA::Any::operator<<=(CORBA::Float Value)
void CORBA::Any::operator<<=(CORBA::Double Value)
void CORBA::Any::operator<<=(const CORBA::Any & Value)
void CORBA::Any::operator<<=(const char * Value)
void CORBA::Any::operator<<=(Object_ptr Value)
引数
Value
Any
に挿入する型固有の値。
説明
この挿入メンバ関数は、型セーフな挿入を実行します。Any
に前の値があり、Release
フラグが CORBA_TRUE
の場合、メモリの割り当てを解除し、前の TypeCode オブジェクトを解放します。次に、Value
パラメータで渡された値をコピーして Any
に新しい値を挿入します。これにより、適切な TypeCode リファレンスが複製されます。
戻り値
特にありません。
CORBA::Boolean CORBA::Any::operator>>=()
概要
型セーフな Any
の抽出演算子。
C++ バインディング
CORBA::Boolean CORBA::Any::operator>>=(
CORBA::Short & Value) const
CORBA::Boolean CORBA::Any::operator>>=(
CORBA::UShort & Value) const
CORBA::Boolean CORBA::Any::operator>>=(
CORBA::Long & Value) const
CORBA::Boolean CORBA::Any::operator>>=(
CORBA::Ulong & Value) const
CORBA::Boolean CORBA::Any::operator>>=(
CORBA::Float & Value) const
CORBA::Boolean CORBA::Any::operator>>=(
CORBA::Double & Value) const
CORBA::Boolean CORBA::Any::operator>>=(CORBA::Any & Value) const
CORBA::Boolean CORBA::Any::operator>>=(char * & Value) const
CORBA::Boolean CORBA::Any::operator>>=(Object_ptr & Value) const
引数
Value
引数は、Any
オブジェクトに格納されている値の出力を受け取る関連オブジェクトのリファレンスです。
説明
この抽出メンバ関数は、型セーフな抽出を実行します。Any
オブジェクトに指定の型がある場合、このメンバ関数は、Any
のポインタを出力リファレンス値 Value
に割り当て、CORBA_TRUE
を返します。Any
に適切な型がない場合は、CORBA_FALSE
を返します。記憶域は Any
オブジェクトによって所有および管理されているため、呼び出し側は記憶域の解放または削除を試行しないでください。Value
引数は、Any
オブジェクトに格納されている値の出力を受け取る関連オブジェクトのリファレンスです。Any
オブジェクトに適切な型がない場合、値は変更されません。
戻り値
特定の型の値が Any
にあった場合は CORBA_TRUE
。特定の型の値が Any
になかった場合は CORBA_FALSE
。
CORBA::Any::operator<<=()
概要
Any
の型セーフな挿入演算子。
C++ バインディング
void CORBA::Any::operator<<=(from_boolean Value)
void CORBA::Any::operator<<=(from_char Value)
void CORBA::Any::operator<<=(from_octet Value)
void CORBA::Any::operator<<=(from_string Value)
引数
Value
Any
に挿入する値を含んだ関連オブジェクト。
説明
これらの挿入メンバ関数は、Any
に CORBA::Boolean
、CORBA::Char
、または CORBA::Octet
リファレンスを型セーフで挿入します。Any
に前の値があり、その Release
フラグが CORBA_TRUE
の場合、メモリの割り当てを解除し、前の TypeCode オブジェクトを解放します。次に、Value
パラメータで渡された値をコピーして Any
オブジェクトに新しい値を挿入します。これにより、適切な TypeCode リファレンスが複製されます。
戻り値
特にありません。
CORBA::Boolean CORBA::Any::operator>>=()
概要
Any
の型セーフな抽出演算子。
C++ バインディング
CORBA::Boolean CORBA::Any::operator>>=(to_boolean Value) const
CORBA::Boolean CORBA::Any::operator>>=(to_char Value) const
CORBA::Boolean CORBA::Any::operator>>=(to_octet Value) const
CORBA::Boolean CORBA::Any::operator>>=(to_object Value) const
CORBA::Boolean CORBA::Any::operator>>=(to_string Value) const
引数
Value
Any
オブジェクトに格納されている値の出力を受け取る関連オブジェクトのリファレンス。Any
オブジェクトに適切な型がない場合、値は変更されません。
説明
これらの抽出メンバ関数は、Any
から CORBA::Boolean
、CORBA::Char
、CORBA::Octet
、CORBA::Object
、または String
リファレンスを型セーフで抽出します。これらの関数は、Any
クラス内で入れ子になったヘルパです。その目的は、C++ では Boolean 型、char 型、octet 型の識別が不要なため、OMG IDL のこれらの型を識別して抽出することです。
戻り値
Any
オブジェクトに指定の型がある場合、このメンバ関数は、Any
オブジェクト・リファレンスの値を出力変数 Value
に割り当て、CORBA_TRUE
を返します。Any
オブジェクトに適切な型がない場合は、CORBA_FALSE
を返します。
CORBA::TypeCode_ptr CORBA::Any::type() const
概要
Any
の TypeCode アクセサ。
C++ バインディング
CORBA::TypeCode_ptr CORBA::Any::type();
引数
特にありません。
説明
この関数は、Any
に関連付けられた TypeCode オブジェクトの TypeCode_ptr
擬似オブジェクト・リファレンスを返します。TypeCode_ptr
擬似オブジェクト・リファレンスは、CORBA::release
メンバ関数で解放する必要があります。または、TypeCode_var
に割り当てて自動的に解放されるようにする必要があります。
戻り値
Any
内にある TypeCode_ptr
。
void CORBA::Any::replace()
概要
型セーフでない Any
の「挿入」。
C++ バインディング
void CORBA::Any::replace(TypeCode_ptr TC, void * Value,
Boolean Release = CORBA_FALSE);
引数
TC
置き換え元の Any
オブジェクトの TypeCode 値を指定する TypeCode 擬似オブジェクト・リファレンス。この引数は複製されます。
Value
Any
オブジェクトが指す記憶域を指定する void ポインタ。
Release
Any
が指定の Value
引数を管理するかどうかを指定します。Release
が CORBA_TRUE
の場合、Any
は所有権を想定します。Release
が CORBA_FALSE
の場合、Any
は所有権を想定しません。この場合、Value
パラメータが指すデータは、割り当て時または破棄時に解放されません。
説明
これらのメンバ関数は、渡された TC
および Value
引数の値に、現在 Any
に格納されているデータおよび TypeCode 値を置き換えます。この関数による置き換えは型セーフではありません。つまり、TypeCode 値と Value
引数が指す記憶域のデータ型との一貫性は、呼び出し側が維持することになります。
Release
が CORBA_TRUE
の場合、この関数は Any
オブジェクト内の既存の TypeCode 擬似オブジェクト解放し、Any
オブジェクト・リファレンスが指す記憶域を解放します。
戻り値
特にありません。
Context メンバ関数
Context は、メソッド呼び出しに関連付けられたオプションのコンテキスト情報を提供します。
Context メンバ関数の C++ へのマッピングは次のとおりです。
class CORBA
{
class Context
{
public:
const char *context_name() const;
Context_ptr parent() const;
void create_child(const char *, Context_out);
void set_one_value(const char *, const Any &);
void set_values(NVList_ptr);
void delete_values(const char *);
void get_values(
const char *,
Flags,
const char *,
NVList_out
);
}; // Context
}// CORBA
メモリ管理
Context には、次の特別なメモリ管理規則があります。
context_name
および parent
関数の戻り値の所有権は Context が保持します。したがって、呼び出し側はこれらの戻り値を解放しないでください。ここでは、各 Context メンバ関数について説明します。
CORBA::Context::context_name
概要
Context オブジェクトの名前を返します。
C++ バインディング
Const char * CORBA::Context::context_name () const;
引数
特にありません。
説明
このメンバ関数は、Context オブジェクトの名前を返します。Context オブジェクト・リファレンスは、戻り値 char * のメモリを所有します。このメモリは変更できません。
戻り値
メンバ関数が成功した場合、Context オブジェクトの名前を返します。Context オブジェクトが CORBA::Context::create_child
の呼び出しで作成された子 Context でない場合、値は空になることがあります。
Context オブジェクトに名前がない場合、空の文字列になります。
CORBA::Context::create_child
概要
Context オブジェクトの子を作成します。
C++ バインディング
void CORBA::Context::create_child (
const char * CtxName,
CORBA::Context_out CtxObject);
引数
CtxName
Context リファレンスに関連付ける名前。
CtxObject
新しく作成する Context オブジェクト・リファレンス。
例外
CORBA::NO_MEMORY
説明
このメンバ関数は、Context オブジェクトの子を作成します。子 Context オブジェクトの検索は、一致する親コンテキストのプロパティ名や、必要に応じてコンテキスト・ツリーなどを対象に行われます。
戻り値
特にありません。
関連項目
CORBA::ORB::get_default_context
CORBA::release
CORBA::Context::delete_values
概要
Context オブジェクトの指定された属性の値を削除します。
C++ バインディング
void CORBA::Context::delete_values (
const char * AttrName);
引数
AttrName
削除する値の属性名。この引数の後にワイルドカード文字 (*) を付けると、ワイルドカード文字の前にある文字列に一致する名前がすべて削除されます。
例外
属性が空の文字列の場合、CORBA::BAD_PARAM
。
削除する属性が見つからなかった場合、CORBA::BAD_CONTEXT
。
説明
このメンバ関数は、Context オブジェクトの属性の名前付きの値を削除します。ただし、親がある場合、再帰的に親に対して同じ処理は行いません。
戻り値
特にありません。
関連項目
CORBA::Context::create_child
CORBA::ORB::get_default_context
CORBA::Context::get_values
概要
指定されたスコープ内で Context オブジェクトの属性値を取得します。
C++ バインディング
void CORBA::Context::get_values (
const char * StartScope,
CORBA::Flags OpFlags,
const char * AttrName,
CORBA::NVList_out AttrValues);
引数
StartScope
指定されたプロパティの検索を開始する Context オブジェクト・レベル。レベルは、コンテキスト名または検索が開始される parent
です。値が 0 (ゼロ) の場合、現在の Context オブジェクトで検索が開始されます。
OpFlags
有効なオペレーション・フラグは、CORBA::CTX_RESTRICT_SCOPE
のみです。このフラグを指定すると、オブジェクト・インプリメンテーションによってプロパティの検索が現在のスコープのみに制限されます。したがって、一連の親コンテキストのプロパティの検索は再帰的に実行されません。このフラグを指定しない場合は、スコープを広げて一致が見つかるか、または検索対象がすべてのレベルになるまで検索が続行されます。
AttrName
戻り値の属性名。この引数の後にワイルドカード文字 (*) を付けると、ワイルドカード文字の前にある文字列に一致する名前がすべて返されます。
AttrValues
指定された属性値を受け取り、NVList
オブジェクトを返します。属性値のリスト内の各項目は NamedValue
です。
例外
属性が空の文字列の場合、CORBA::BAD_PARAM
。
一致する属性が見つからなかった場合、CORBA::BAD_CONTEXT
。
動的メモリ割り当てに失敗した場合、CORBA::NO_MEMORY
。
説明
このメンバ関数は、Context オブジェクトの指定された属性の値を取得します。値は NVList オブジェクトとして返します。このオブジェクトが不要になったときは、CORBA::release
メンバ関数を使用して解放する必要があります。
戻り値
特にありません。
関連項目
CORBA::Context::create_child
CORBA::ORB::get_default_context
CORBA::Context::parent
概要
Context オブジェクトの親コンテキストを返します。
C++ バインディング
CORBA::Context_ptr CORBA::Context::parent () const;
引数
特にありません。
説明
このメンバ関数は、Context オブジェクトの親コンテキストを返します。Context オブジェクトの親は Context が所有する属性で、呼び出し側が変更または解放することはできません。CORBA::Context::create_child
メンバ関数で Context オブジェクトを作成するまで、親はニルです。
戻り値
メンバ関数が成功した場合、Context オブジェクトの親コンテキストを返します。親コンテキストがニルの場合もあります。CORBA::is_nil
メンバ関数を使用すると、オブジェクト・リファレンスがニルかどうかをテストできます。
メンバ関数が失敗した場合、例外がスローされます。CORBA::is_nil
メンバ関数を使用すると、オブジェクト・リファレンスがニルかどうかをテストできます。
CORBA::Context::set_one_value
概要
Context オブジェクトの指定の属性値を設定します。
C++ バインディング
void CORBA::Context::set_one_value (
const char * AttrName,
const CORBA::Any & AttrValue);
引数
AttrName
設定する属性の名前。
AttrValue
属性の値。現在、BEA Tuxedo システムでは文字列型のみをサポートしています。したがって、このパラメータは、CORBA::Any
オブジェクト内で文字列型で指定する必要があります。
例外
AttrName
が空の文字列の場合、または AttrValue
に文字列型がない場合、CORBA::BAD_PARAM
。
動的メモリ割り当てに失敗した場合、CORBA::NO_MEMORY
。
説明
このメンバ関数は、Context オブジェクトの指定された属性値を設定します。現在、Context オブジェクトでサポートされているのは文字列値のみです。Context オブジェクトに属性名が設定済みの場合、最初にその属性名が削除されます。
戻り値
特にありません。
関連項目
CORBA::Context::get_values
CORBA::Context::set_values
CORBA::Context::set_values
概要
Context オブジェクトの指定の属性値を設定します。
C++ バインディング
void CORBA::Context::set_values (
CORBA::NVList_ptr AttrValue);
引数
AttrValues
属性の名前および値。現在、BEA Tuxedo システムでは文字列型のみをサポートしています。したがって、リスト内の NamedValue オブジェクトはすべて、CORBA::Any
オブジェクト内で文字列型で指定する必要があります。
例外
属性値の中に文字列型でない値がある場合、CORBA::BAD_PARAM
。
動的メモリ割り当てに失敗した場合、CORBA::NO_MEMORY
。
説明
このメンバ関数は、Context オブジェクトの指定の属性値を設定します。CORBA::NVList
メンバ関数には、設定するプロパティの名前と値のペアが入ります。
戻り値
特にありません。
関連項目
CORBA::Context::get_values
CORBA::Context::set_one_value
ContextList メンバ関数
ContextList を使用すると、クライアント・アプリケーションまたはサーバ・アプリケーションでコンテキスト文字列のリストを提供できるようになります。このリストは、Request 呼び出しで指定する必要があります。Request メンバ関数については、Request メンバ関数を参照してください。
ContextList と Context は、前者が必要に応じて Request 呼び出しで検索または送信されるコンテキスト文字列値のみを提供するのに対し、後者は取得する文字列値を提供する点で異なります。Context メンバ関数については、「Context メンバ関数」を参照してください。
ContextList メンバ関数の C++ へのマッピングは次のとおりです。
class CORBA
{
class ContextList
{
public:
Ulong count ();
void add(const char* ctxt);
void add_consume(char* ctxt);
const char* item(Ulong index);
Status remove(Ulong index);
}; // ContextList
}// CORBA
CORBA::ContextList:: count
概要
リスト内の現在の項目数を取得します。
C++ バインディング
Ulong count ();
引数
特にありません。
例外
関数が失敗した場合、例外がスローされます。
説明
このメンバ関数は、リスト内の現在の項目数を取得します。
戻り値
関数が成功した場合、戻り値はリスト内の項目数です。リストを作成したばかりで、ContextList オブジェクトを追加していない場合は、0 (ゼロ) が返されます。
関連項目
CORBA::ContextList::add
CORBA::ContextList::add_consume
CORBA::ContextList::item
CORBA::ContextList::remove
CORBA::ContextList::add
概要
名前の付いていない項目で ContextList オブジェクトを作成します。これは、flags
属性のみを設定したオブジェクトです。
C++ バインディング
void add(const char* ctxt);
引数
ctxt
char* によって参照されるメモリ位置を定義します。
例外
メンバ関数が失敗した場合、CORBA::NO_MEMORY
例外がスローされます。
説明
このメンバ関数は、名前の付いていない項目で ContextList オブジェクトを作成します。これは、flags 属性のみを設定したオブジェクトです。
ContextList オブジェクトは動的に拡張するので、そのサイズをアプリケーションでトラッキングする必要はありません。
戻り値
関数が成功した場合、戻り値は新しく作成された ContextList オブジェクトへのポインタです。
関連項目
CORBA::ContextList::add_consume
CORBA::ContextList::count
CORBA::ContextList::item
CORBA::ContextList::remove
CORBA::ContextList::add_consume
概要
ContextList オブジェクトを作成します。
C++ バインディング
void add_consume(const char* ctxt);
引数
char* によって参照されるメモリ位置を定義します。
例外
メンバ関数が失敗した場合、例外が発生します。
説明
このメンバ関数は、ContextList オブジェクトを作成します。
ContextList オブジェクトは動的に拡張するので、そのサイズをアプリケーションでトラッキングする必要がありません。
戻り値
関数が成功した場合、戻り値は新しく作成された ContextList オブジェクトへのポインタです。
関連項目
CORBA::ContextList::add
CORBA::ContextList::count
CORBA::ContextList::item
CORBA::ContextList::remove
CORBA::ContextList::item
概要
渡されたインデックスに基づいて ContextList オブジェクトへのポインタを取得します。
C++ バインディング
const char* item(ULong index);
引数
index
ContextList オブジェクトへのインデックス。インデックスの基数はゼロです。
例外
この関数が失敗した場合、BAD_PARAM
例外がスローされます。
説明
このメンバ関数は、渡されたインデックスに基づいて ContextList オブジェクトへのポインタを取得します。関数では、ゼロを基数にしたインデックスを使用します。
戻り値
関数が成功した場合、戻り値は ContextList オブジェクトへのポインタです。
関連項目
CORBA::ContextList::add
CORBA::ContextList::add_consume
CORBA::ContextList::count
CORBA::ContextList::remove
CORBA::ContextList::remove
概要
指定されたインデックスの項目を削除し、関連付けられたメモリをすべて解放してから、リストの残りの項目を順序付けし直します。
C++ バインディング
Status remove(ULong index);
引数
Index
ContextList オブジェクトへのインデックス。インデックスの基数はゼロです。
例外
この関数が失敗した場合、BAD_PARAM
例外がスローされます。
説明
このメンバ関数は、指定されたインデックスの項目を削除し、関連付けられたメモリをすべて解放してから、リストの残りの項目を順序付けし直します。
戻り値
特にありません。
関連項目
CORBA::ContextList::add
CORBA::ContextList::add_consume
CORBA::ContextList::count
CORBA::ContextList::item
NamedValue メンバ関数
NamedValue メンバ関数は、特に DII で NVList の要素としてのみ使用します。NamedValue は、(オプションの) 名前、any
の値、およびラベリング・フラグを保持します。有効なフラグ値は、CORBA::ARG_IN
、CORBA::ARG_OUT
、および CORBA::ARG_INOUT
です。
NamedValue の値は、any
の標準オペレーションで操作できます。
NamedValue メンバ関数の C++ へのマッピングは次のとおりです。
// C++
class NamedValue
{
public:
Flags flags() const;
const char * name() const;
Any * value() const;
};
メモリ管理
NamedValue には、次の特別なメモリ管理規則があります。
name()
および value()
関数の戻り値の所有権は NamedValue が保持します。したがって、呼び出し側はこれらの戻り値を解放しないでください。以下の節では、NamedValue の各メンバ関数について説明します。
CORBA::NamedValue::flags
概要
NamedValue オブジェクトの flags 属性を取得します。
C++ バインディング
CORBA::Flags CORBA::NamedValue::flags () const;
引数
特にありません。
説明
このメンバ関数は、NamedValue オブジェクトの flags 属性を取得します。
戻り値
関数が成功した場合、戻り値は NamedValue オブジェクトの flags 属性です。
関数が失敗した場合、例外がスローされます。
CORBA::NamedValue::name
概要
NamedValue オブジェクトの name 属性を取得します。
C++ バインディング
const char * CORBA::NamedValue::name () const;
引数
特にありません。
説明
このメンバ関数は、NamedValue オブジェクトの name 属性を取得します。このメンバ関数が返す名前は NamedValue オブジェクトによって所有されます。そのため、変更または解放しないでください。
戻り値
関数が成功した場合、戻り値は NamedValue オブジェクトの name 属性を表す定数 Identifier オブジェクトです。
関数が失敗した場合、例外がスローされます。
CORBA::NamedValue::value
概要
NamedValue オブジェクトの value 属性へのポインタを取得します。
C++ バインディング
CORBA::Any * CORBA::NamedValue::value () const;
引数
特にありません。
説明
このメンバ関数は、NamedValue オブジェクトの value 属性を表す Any
オブジェクトへのポインタを取得します。この属性は NamedValue オブジェクトによって所有されます。そのため、変更または解放しないでください。
戻り値
関数が成功した場合、戻り値は NamedValue オブジェクト内にある Any
オブジェクトへのポインタです。
関数が失敗した場合、例外がスローされます。
NVList メンバ関数
NVList は NamedValue のリストです。新しい NVList は、ORB::create_list
オペレーション (「CORBA::ORB::create_exception_list」を参照) で作成します。新しい NamedValue は、次のいずれかの方法で NVList の一部として作成できます。
add
− flags のみを初期化して名前の付いていない値を作成します。add_item
− name と flags を初期化します。add_value
− name、value、および flags を初期化します。上記の各オペレーションによって、新しい項目が返されます。
要素は、ゼロを基数にしたインデックスを介してアクセスおよび削除できます。add
、add_item
、add_value
、add_item_consume
、および add_value_consume
関数は、呼び出されるたびに NVList
を長くして新しい要素を保持できるようにします。既存の要素にアクセスするには、item
関数を使用します。
// C++
class NVList
{
public:
ULong count() const;
NamedValue_ptr add(Flags);
NamedValue_ptr add_item(const char*, Flags);
NamedValue_ptr add_value(const char*, const Any&, Flags);
NamedValue_ptr item(ULong);
void remove(ULong);
};
メモリ管理
NVList には、次の特別なメモリ管理規則があります。
add
、add_item
、add_value
、add_item_consume
、add_value_consume
、および item
関数の戻り値の所有権は NVList が保持します。したがって、呼び出し側はこれらの戻り値を解放しないでください。add_item_consume
と add_value_consume
関数の char*
パラメータ、および add_value_consume
関数の Any*
パラメータは、NVList が使用します。NVList はこれらのパラメータをコピーして、元のパラメータをすぐに破棄します。そのため、パラメータが関数に渡された後は、呼び出し側がこれらのデータにアクセスすることはできません。基となる NamedValue の value
属性を呼び出し側が変更する場合は、NamedValue::value()
オペレーションを使用します。remove
関数は、削除済みの NamedValue の CORBA::release
も呼び出します。以下の節では、NVList の各メンバ関数について説明します。
CORBA::NVList::add
概要
名前の付いていない項目で NamedValue オブジェクトを作成します。これは、flags
属性のみを設定したオブジェクトです。
C++ バインディング
CORBA::NamedValue_ptr CORBA::NVList::add (
CORBA::Flags Flags);
引数
Flags
渡す引数を指定するフラグ。次の値を指定できます。
CORBA::ARG_IN
CORBA::ARG_INOUT
CORBA::ARG_OUT
説明
このメンバ関数は、名前の付いていない項目で NamedValue オブジェクトを作成します。これは、flags 属性のみを設定したオブジェクトです。NamedValue オブジェクトは、呼び出された NVList オブジェクトに追加されます。
NVList オブジェクトは動的に拡張するので、そのサイズをアプリケーションでトラッキングする必要はありません。
戻り値
関数が成功した場合、戻り値は新しく作成された NamedValue オブジェクトへのポインタです。返された NamedValue オブジェクト・リファレンスは NVList が所有するため、解放しないでください。
メンバ関数が失敗した場合、CORBA::NO_MEMORY
例外がスローされます。
関連項目
CORBA::NVList::add
CORBA::NVList::add_item
CORBA::NVList::add_value
CORBA::NVList::count
CORBA::NVList::remove
CORBA::NVList::add_item
概要
空の value 属性を作成し、name および flags 属性を初期化して NamedValue オブジェクトを作成します。
C++ バインディング
CORBA::NamedValue_ptr CORBA::NVList::add_item (
const char * Name,
CORBA::Flags Flags);
引数
Name
リスト項目の名前。
Flags
渡す引数を指定するフラグ。次の値を指定できます。
CORBA::ARG_IN
CORBA::ARG_INOUT
CORBA::ARG_OUT
説明
このメンバ関数は、空の value 属性を作成し、パラメータとして渡す name および flags 属性を初期化して NamedValue オブジェクトを作成します。NamedValue オブジェクトは、呼び出された NVList オブジェクトに追加されます。
NVList オブジェクトは動的に拡張するので、そのサイズをアプリケーションでトラッキングする必要はありません。
戻り値
関数が成功した場合、戻り値は新しく作成された NamedValue オブジェクトへのポインタです。返された NamedValue オブジェクト・リファレンスは NVList が所有するため、解放しないでください。
メンバ関数が失敗した場合、例外がスローされます。
関連項目
CORBA::NVList::add
CORBA::NVList::add_value
CORBA::NVList::count
CORBA::NVList::item
CORBA::NVList::remove
CORBA::NVList::add_value
概要
name、value、および flags 属性を初期化して NamedValue オブジェクトを作成します。
C++ バインディング
CORBA::NamedValue_ptr CORBA::NVList::add_value (
const char * Name,
const CORBA::Any & Value,
CORBA::Flags Flags);
引数
Name
リスト項目の名前。
Value
リスト項目の値。
Flags
渡す引数を指定するフラグ。次の値を指定できます。
CORBA::ARG_IN
CORBA::ARG_INOUT
CORBA::ARG_OUT
説明
このメンバ関数は、name、value、および flags 属性を初期化して NamedValue オブジェクトを作成します。NamedValue オブジェクトは、呼び出された NVList オブジェクトに追加されます。
NVList オブジェクトは動的に拡張するので、そのサイズをアプリケーションでトラッキングする必要はありません。
戻り値
関数が成功した場合、戻り値は新しく作成された NamedValue オブジェクトへのポインタです。返された NamedValue オブジェクト・リファレンスは NVList が所有するため、解放しないでください。
メンバ関数が失敗した場合、例外が発生します。
関連項目
CORBA::NVList::add
CORBA::NVList::add_item
CORBA::NVList::count
CORBA::NVList::item
CORBA::NVList::remove
CORBA::NVList::count
概要
リスト内の現在の項目数を取得します。
C++ バインディング
CORBA::ULong CORBA::NVList::count () const;
引数
特にありません。
説明
このメンバ関数は、リスト内の現在の項目数を取得します。
戻り値
関数が成功した場合、戻り値はリスト内の項目数です。リストを作成したばかりで、NamedValue オブジェクトを追加していない場合は、0 (ゼロ) が返されます。
関数が失敗した場合、例外がスローされます。
関連項目
CORBA::NVList::add
CORBA::NVList::add_item
CORBA::NVList::add_value
CORBA::NVList::item
CORBA::NVList::remove
CORBA::NVList::item
概要
渡されたインデックスに基づいて NamedValue オブジェクトへのポインタを取得します。
C++ バインディング
CORBA::NamedValue_ptr CORBA::NVList::item (
CORBA::ULong Index);
引数
Index
NVList オブジェクトへのインデックス。インデックスの基数はゼロです。
例外
この関数が失敗した場合、BAD_PARAM
例外がスローされます。
説明
このメンバ関数は、渡されたインデックスに基づいて NamedValue オブジェクトへのポインタを取得します。関数では、ゼロを基数にしたインデックスを使用します。
戻り値
関数が成功した場合、戻り値は NamedValue オブジェクトへのポインタです。返された NamedValue オブジェクト・リファレンスは NVList が所有するため、解放しないでください。
関連項目
CORBA::NVList::add
CORBA::NVList::add_item
CORBA::NVList::add_value
CORBA::NVList::count
CORBA::NVList::remove
CORBA::NVList::remove
概要
指定されたインデックスの項目を削除し、関連付けられたメモリをすべて解放してから、リストの残りの項目を順序付けし直します。
C++ バインディング
void CORBA::NVList::remove (
CORBA::ULong Index);
引数
Index
NVList オブジェクトへのインデックス。インデックスの基数はゼロです。
例外
この関数が失敗した場合、BAD_PARAM
例外がスローされます。
説明
このメンバ関数は、指定されたインデックスの項目を削除し、関連付けられたメモリをすべて解放してから、リストの残りの項目を順序付けし直します。
戻り値
特にありません。
関連項目
CORBA::NVList::add
CORBA::NVList::add_item
CORBA::NVList::add_value
CORBA::NVList::count
CORBA::NVList::item
Object メンバ関数
ここでは、OMG IDL インターフェイスの Object に適用される規則について説明します。Object は、OMG IDL インターフェイス階層の基底インターフェイスです。インターフェイス Object では、擬似オブジェクトではなく通常の CORBA オブジェクトを定義します。ただし、ここではほかの擬似オブジェクトも参照するため、これについても触れています。
ほかの規則に加えて、インターフェイス Object のオペレーション名はすべて、マッピングされる C++ クラスの先頭に下線が付きます。また、create_request
のマッピングは 3 つに分類されます。これらは、「Request メンバ関数」で説明した方式にそれぞれ対応しています。is_nil
および release
関数については、「Object メンバ関数」で説明する CORBA 名前空間を参照してください。
BEA Tuxedo ソフトウェアでは、CORBA Revision 2.2 で定義されているオブジェクト・リファレンス・オペレーションを使用しています。これらのオペレーションが依存するのは、型 Object
のみです。したがって、オペレーションは CORBA 名前空間の中で通常の関数として記述できます。
注記 BEA Tuxedo ソフトウェアでは、BOA ではなく POA を使用しているため、非推奨の get_implementation()
メンバ関数は認識されません。このメンバ関数を参照しようとすると、コンパイル・エラーが発生します。
Object メンバ関数の C++ へのマッピングは次のとおりです。
class CORBA
ExceptionList_ptr Except_list,
{
class Object
{
public:
CORBA::Boolean _is_a(const char *)
CORBA::Boolean _is_equivalent();
CORBA::Boolean _nonexistent(Object_ptr);
static Object_ptr _duplicate(Object_ptr obj);
static Object_ptr _nil();
InterfaceDef_ptr _get_interface();
CORBA::ULong _hass(CORBA::ULong);
void _create_request(
Context_ptr ctx,
const char *operation,
NVList_ptr arg_list,
NamedValue_ptr result,
Request_out request,
Flags req_flags
);
Status _create_request(
Context_ptr ctx,
const char * operation,
NVList_ptr arg_list,
NamedValue_ptr result,
ContextList_ptr Context_list,Request_out request,
Flags req_flags
);
Request_ptr _request(const char* operation);
}; //Object
}; // CORBA
以下の節では、Object
の各メンバ関数について説明します。
CORBA::Object::_create_request
概要
ユーザ指定の情報で要求を作成します。
C++ バインディング
Void CORBA::Object::_create_request (
CORBA::Context_ptr Ctx,
const char * Operation,
CORBA::NVList_ptr Arg_list,
CORBA::NamedValue_ptr Result,
CORBA::ExceptionList_ptr Except_list,
CORBA::ContextList_ptr Context_list,
CORBA::Request_out Request,
CORBA::Flags Req_flags,);
引数
Ctx
この要求に使用する Context。
Operation
この要求のオペレーション名。
Arg_list
この要求の引数リスト。
Result
正常に呼び出しが行われた後、この要求の戻り値を格納する NamedValue リファレンス。
Except_list
この要求の例外リスト。
Context_list
この要求のコンテキスト・リスト。
Request
新しく作成する要求リファレンス。
Req_flags
将来使用するために予約されています。ゼロの値を渡す必要があります。
説明
このメンバ関数は、コンテキスト、オペレーション名、およびその他の情報を提供する要求を作成します (長い形式)。呼び出し時に指定したオペレーション名だけで要求を作成する (短縮形式) には、CORBA::Object::_request
メンバ関数を使用します。ただし、長い形式で提供される残りの情報については、最終的には指定する必要があります。
戻り値
特にありません。
関連項目
CORBA::Object::_request
CORBA::Object::_duplicate
概要
Object オブジェクト・リファレンスを複製します。
C++ バインディング
CORBA::Object_ptr CORBA::Object::_duplicate(
Object_ptr Obj);
引数
obj
複製するオブジェクト・リファレンス。
説明
このメンバ関数は、指定の Object オブジェクト・リファレンス (Obj
) を複製します。指定のオブジェクト・リファレンスがニルの場合、_duplicate
関数はニル・オブジェクト・リファレンスを返します。この呼び出しで返されるオブジェクトは、CORBA::release
で解放するか、または自動的に破棄されるように CORBA::Object_var
を割り当てる必要があります。
この関数では、CORBA システム例外がスローされる場合があります。
戻り値
複製オブジェクト・リファレンスを返します。指定のオブジェクト・リファレンスがニルの場合は、ニル・オブジェクト・リファレンスを返します。
例
CORBA::Object_ptr op = TP::create_object_reference(
"IDL:Teller:1.0","MyTeller");
CORBA::Object_ptr dop = CORBA::Object::_duplicate(op);
CORBA::Object::_get_interface
概要
Repository オブジェクトのインターフェイス定義を返します。
C++ バインディング
CORBA::InterfaceDef_ptr CORBA::Object::_get_interface ();
引数
特にありません。
説明
Repository オブジェクトのインターフェイス定義を返します。
注記 リポジトリ・インターフェイス API を使用するには、マクロを定義してから CORBA.h
をインクルードします。マクロの定義方法については、『BEA Tuxedo CORBA サーバ・アプリケーションの開発方法』を参照してください。
戻り値
InterfaceDef_ptr
CORBA::Object::_is_a
概要
オブジェクトが特定のインターフェイスのインスタンスであるかどうかを指定します。
C++ バインディング
CORBA::Boolean CORBA::Object::_is_a(const char * interface_id);
引数
interface_id
インターフェイス・リポジトリ ID を示す文字列。
説明
このメンバ関数は、オブジェクトが interface_id
パラメータで指定されたインターフェイスのインスタンスであるかどうかを指定するために使用します。この関数を使用すると、ORB のスコープでオブジェクト・リファレンスの型セーフの維持が容易になります。
戻り値
オブジェクトが指定の型のインスタンスである場合、またはオブジェクトがそのオブジェクトの「最終派生」型の上位オブジェクトである場合、TRUE
を返します。
例
CORBA::Object_ptr op = TP::create_object_reference(
"IDL:Teller:1.0", "MyTeller");
CORBA::Boolean b = op->_is_a("IDL:Teller:1.0");
CORBA::Object::_is_equivalent
概要
2 つのオブジェクト・リファレンスが等価であるかどうかを判別します。
C++ バインディング
CORBA::Boolean CORBA::Object::_is_equivalent (
CORBA::Object_ptr other_obj);
引数
other_obj
対象のオブジェクトとの比較に使用される、他方のオブジェクトのオブジェクト・リファレンス。
例外
標準 CORBA 例外がスローされる場合があります。
説明
このメンバ関数は、2 つのオブジェクト・リファレンスが等価であるかどうかを判別するために使用します。これにより、ORB での判別が容易になります。この関数では、一方のオブジェクト・リファレンスが、パラメータとして渡されたオブジェクト・リファレンスと等価である場合、TRUE
を返します。2 つのオブジェクト・リファレンスが同じ場合、両者は等価です。2 つのオブジェクト・リファレンスが異なっても、同一のオブジェクトを参照していれば、両者は等価です。
戻り値
対象のオブジェクト・リファレンスが、パラメータとして渡された他方のオブジェクト・リファレンスと等価であると認識された場合、TRUE
を返します。それ以外の場合は、FALSE
を返します。
例
CORBA::Object_ptr op = TP::create_object_reference(
"IDL:Teller:1.0", "MyTeller");
CORBA::Object_ptr dop = CORBA::Object::_duplicate(op);
CORBA::Boolean b = op->_is_equivalent(dop);
CORBA::Object::_nil
概要
ニル・オブジェクトのリファレンスを返します。
C++ バインディング
CORBA::Object_ptr CORBA::Object::_nil();
引数
特にありません。
説明
このメンバ関数は、ニル・オブジェクト・リファレンスを返します。指定のオブジェクトがニルであるかどうかをテストするには、適切な CORBA::is_nil
メンバ関数を使用します。この関数については、「CORBA::release」を参照してください。_nil
メンバ関数の CORBA:is_nil
ルーチンを呼び出すと、常に CORBA_TRUE
が返されます。
戻り値
ニル・オブジェクト・リファレンスを返します。
例
CORBA::Object_ptr op = CORBA::Object::_nil();
CORBA::Object::_non_existent
概要
オブジェクトが破棄されているかどうかを判別するために使用します。
C++ バインディング
CORBA::Boolean CORBA::Object::_non_existent();
引数
特にありません。
説明
このメンバ関数は、オブジェクトが破棄されているかどうかを判別するために使用します。この関数では、オブジェクトのアプリケーション・レベルのオペレーションを呼び出さずに判別を行うので、オブジェクト自体に影響は生じません。
戻り値
ORB で正式にオブジェクトが存在しないことが認識された場合、CORBA::OBJECT_NOT_EXIST
を引き起こさずに CORBA_TRUE
を返します。それ以外の場合は、CORBA_FALSE
を返します。
CORBA::Object::_request
概要
オペレーション名を指定する要求を作成します。
C++ バインディング
CORBA::Request_ptr CORBA::Object::_request (
const char * Operation);
引数
Operation
この要求のオペレーション名。
説明
このメンバ関数は、オペレーション名を指定する要求を作成します。引数や結果などのその他の情報はすべて、CORBA::Request
メンバ関数で設定する必要があります。
戻り値
関数が成功した場合、戻り値は新しく作成された要求へのポインタです。
メンバ関数が失敗した場合、例外がスローされます。
関連項目
CORBA::Object::_create_request
CORBA メンバ関数
ここでは、Object および Pseudo-Object Reference メンバ関数について説明します。
CORBA メンバ関数の C++ へのマッピングは次のとおりです。
class CORBA {
void release(Object_ptr);
void release(Environment_ptr);
void release(NamedValue_ptr);
void release(NVList_ptr);
void release(Request_ptr);
void release(Context_ptr);
void release(TypeCode_ptr);
void release(POA_ptr);
void release(ORB_ptr);
void release(ExceptionList_ptr);
void release(ContextList_ptr);
Boolean is_nil(Object_ptr);
Boolean is_nil(Environment_ptr);
Boolean is_nil(NamedValue_ptr);
Boolean is_nil(NVList_ptr);
Boolean is_nil(Request_ptr);
Boolean is_nil(Context_ptr);
Boolean is_nil(TypeCode_ptr);
Boolean is_nil(POA_ptr);
Boolean is_nil(ORB_ptr);
Boolean is_nil(ExceptionList_ptr);
Boolean is_nil(ContextList_ptr);
hash(maximum);
resolve_initial_references(identifier);
...
};
CORBA::release
概要
指定のオブジェクト型に対して割り当てられたリソースを解放できるようにします。
C++ バインディング
void CORBA::release(spec_object_type obj);
引数
obj
呼び出し側が今後アクセスしないオブジェクト・リファレンス。指定するオブジェクト型は、「CORBA メンバ関数」の一覧にある型のいずれかでなければなりません。
説明
このメンバ関数は、呼び出し側が今後リファレンスにアクセスしないことを示します。その結果、関連付けられたリソースの割り当てが解除される場合があります。指定したオブジェクト・リファレンスがニルの場合、release オペレーションは何の処理も行いません。ORB の最後のリファレンスである ORB インスタンスを解放する場合、ORB は破棄の前にシャットダウンされます。これは、CORBA::release
を呼び出す前に ORB_shutdown
を呼び出すのと同じです。この処理は、ORB で呼び出された release
メンバ関数にのみ適用されます。
このメンバ関数では、CORBA 例外はスローされない場合があります。
戻り値
特にありません。
例
CORBA::Object_ptr op = TP::create_object_reference(
"IDL:Teller:1.0", "MyTeller");
CORBA::release(op);
CORBA::is_nil
概要
指定のオブジェクト型に対応するオブジェクトが存在するかどうかを判別します。
C++ バインディング
CORBA::Boolean CORBA::is_nil(spec_object_type obj);
引数
obj
オブジェクト・リファレンス。指定するオブジェクト型は、「CORBA メンバ関数」の一覧にある型のいずれかでなければなりません。
説明
このメンバ関数は、指定のオブジェクト・リファレンスがニルかどうかを判別するために使用します。ORB で定義したニル・オブジェクト・リファレンスの特別な値がオブジェクト・リファレンスにある場合、TRUE が返されます。
このオペレーションでは、CORBA 例外はスローされない場合があります。
戻り値
指定のオブジェクトがニルの場合は TRUE
を、それ以外の場合は FALSE
を返します。
例
CORBA::Object_ptr op = TP::create_object_reference(
"IDL:Teller:1.0", "MyTeller");
CORBA::Boolean b = CORBA::is_nil(op);
CORBA::hash
概要
ORB 内部の識別子でオブジェクト・リファレンスへの間接アクセスを提供します。
C++ バインディング
CORBA::hash(CORBA::ULong maximum);
引数
maximum
ORB が返すハッシュ値の上限を指定します。
説明
オブジェクト・リファレンスは、ORB 内部識別子に関連付けられています。アプリケーションは、hash()
オペレーションを使用して、この識別子に間接的にアクセスできます。この識別子の値は、オブジェクト・リファレンスが存在している間は変更されません。したがって、識別子のどのハッシュ関数も変更されません。
このオペレーションの値は、確実に一意とは限りません。つまり、ほかのオブジェクト・リファレンスが同じハッシュ値を返す場合もあるということです。ただし、2 つのオブジェクト・リファレンスが別々にハッシュされた場合、アプリケーションでは 2 つのオブジェクト・リファレンスが同じでないことを判別できます。
hash
オペレーションの maximum
パラメータには、ORB が返すハッシュ値の上限を指定します。この値の下限はゼロです。この機能は通常、オブジェクト・リファレンスの衝突チェーン状のハッシュ・テーブルを作成したり、これにアクセスしたりするために使用します。したがって、その範囲内で値がランダムに分散するほど、計算する値は小さくなり、計算精度も向上します。
戻り値
特にありません。
CORBA::resolve_initial_references
概要
identifier
文字列に対応する初期オブジェクト・リファレンスを返します。
C++ バインディング
CORBA::Object_ptr CORBA::resolve_initial_references(
const CORBA::char *identifier);
引数
identifier
リファレンスが必要なオブジェクトを識別する文字列。
例外
InvalidName
説明
identifier
文字列に対応する初期オブジェクト・リファレンスを返します。有効な識別子は、"RootPOA"
および "POACurrent"
です。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
戻り値
CORBA::Object_ptr
を返します。
例
CORBA::ORB_ptr orb = CORBA::ORB_init(argc, argv);
CORBA::Object_ptr pfobj =
orb->resolve_initial_references("RootPOA");
PortableServer::POA_ptr rootPOA;
rootPOA = PortableServer::POA::narrow(pfobj);
ORB メンバ関数
ORB メンバ関数は、オブジェクト・リクエスト・ブローカのプログラミング・インターフェイスです。
ORB メンバ関数の C++ へのマッピングは次のとおりです。
class CORBA
{
class ORB
{
public:
char *object_to_string(Object_ptr);
Object_ptr string_to_object(const char *);
void create_list(Long, NVList_out);
void create_operation_list(operationDef_ptr, NVList_out);
void create_named_value(NamedValue_out);
void create_exception_list(ExceptionList_out);
void create_context_list(ContextList_out);
void get_default_context(Context_out);
void create_environment(Environment_out);
void send_multiple_requests_oneway(const requestSeq&);
void send_multiple_requests_deferred(const requestSeq&);
Boolean poll_next_response();
void get_next_response(Request_out);
Boolean work_pending();
void perform_work();
void create_policy (in PolicyType type, in any val);
// 拡張
void destroy();
// スレッド間のコンテキストの共有をサポートする拡張
void Ctx get_ctx() = 0;
void set_ctx(Ctx) = 0;
void clear_ctx() = 0;
// スレッドの拡張
void inform_thread_exit(TID) = 0;
}; //ORB
}; // CORBA
スレッド関連のオペレーション
シングル・スレッド ORB、および認識されないマルチスレッド・コードを実行するマルチスレッド ORB をサポートするには、perform_work
と work_pending
の 2 つのオペレーションを ORB インターフェイスに含めます。これらのオペレーションは、シングル・スレッド・アプリケーションでもマルチスレッド・アプリケーションでも使用できます。アプリケーションが純粋な ORB クライアントの場合は、これらのオペレーションは不要です。
マルチスレッド・サーバ・アプリケーションをサポートするには、get_ctx
、set_ctx
、clear_ctx
、および inform_thread_exit
の 4 つのオペレーションを ORB インターフェイスへの拡張として含めます。
以下の節では、ORB の各メンバ関数について説明します。
CORBA::ORB::clear_ctx
概要
このメソッドでコンテキストが不要になったことを示します。このメソッドは、マルチスレッド・サーバ・アプリケーションの開発をサポートします。
C++ バインディング
void clear_ctx()
パラメータ
特にありません。
戻り値
特にありません。
説明
このメソッドは、スレッドがコンテキストの使用を終了した後、アプリケーション管理のスレッドによって呼び出されます。このメソッドは、当該スレッドとコンテキストとの関連付けを解除します。
注記 clear_ctx
メソッドは、BEA Tuxedo システムが管理しているスレッド内からは呼び出さないでください。BEA Tuxedo システムでは、適切にコンテキストを伝達し、管理しているスレッドを自動的にクリーンアップします。BEA Tuxedo システムが管理しているスレッドでこのメソッドを呼び出した場合、BAD_PARAM
例外がスローされます。
例
TP::orb()->clear_ctx();
関連項目
CORBA::ORB::get_ctx
CORBA::ORB::set_ctx
CORBA::ORB::create_context_list
概要
コンテキストのリストを作成して返します。
C++ バインディング
void CORBA::ORB::create_context_list(
CORBA::ContextList_out List);
引数
List
新しく作成されるコンテキスト・リストのリファレンスを受け取ります。
説明
このメンバ関数は、コンテキスト文字列のリストを作成して返します。コンテキスト文字列のリストには、動的起動インターフェイス (DII) で使用可能な形式で Request オペレーションを指定する必要があります。このリストが不要になったときは、CORBA::release
メンバ関数でリストを解放しなければなりません。
戻り値
特にありません。
CORBA::ORB::create_environment
概要
環境を作成します。
C++ バインディング
void CORBA::ORB::create_environment (
CORBA::Environment_out New_env);
引数
新しく作成される環境のリファレンスを受け取ります。
説明
このメンバ関数は、環境を作成します。
戻り値
特にありません。
関連項目
CORBA::NVList::add
CORBA::NVList::add_item
CORBA::NVList::add_value
CORBA::release
CORBA::ORB::create_exception_list
概要
例外のリストを返します。
C++ バインディング
void CORBA::ORB::create_exception_list(
CORBA::ExceptionList_out List);
引数
List
新しく作成される例外リストのリファレンスを受け取ります。
説明
このメンバ関数は、動的起動インターフェイス (DII) で使用可能な形式で例外のリストを作成して返します。このリストが不要になったときは、CORBA::release
メンバ関数でリストを解放しなければなりません。
戻り値
特にありません。
CORBA::ORB::create_list
概要
NVList オブジェクト・リファレンスを作成して返します。
C++ バインディング
void CORBA::ORB::create_list (
CORBA::Long NumItem,
CORBA::NVList_out List);
引数
NumItem
新しく作成されるリストに事前に割り当てる要素数。
List
新しく作成されたリストを受け取ります。
説明
このメンバ関数は、指定の項目数を事前に割り当ててリストを作成します。リスト項目は、CORBA::NVList_add_item
メンバ関数を使用して順番にリストに追加できます。このリストが不要になったときは、CORBA::release
メンバ関数でリストを解放しなければなりません。
戻り値
特にありません。
関連項目
CORBA::NVList::add
CORBA::NVList::add_item
CORBA::NVList::add_value
CORBA::release
CORBA::ORB::create_named_value
概要
NamedValue オブジェクト・リファレンスを作成します。
C++ バインディング
void CORBA::ORB::create_named_value (
NameValue_out NewNamedVal);
引数
NewNamedVal
新しく作成される NamedValue オブジェクトのリファレンス。
説明
このメンバ関数は、NamedValue オブジェクトを作成します。これは、NamedValue オブジェクトが必要な要求の結果の引数を取得するために使用します。このメンバ関数を呼び出すと、NVList オブジェクトを作成するのに余計な手順を省くことができます。
NamedValue オブジェクトが不要になったときは、CORBA::release
メンバ関数で NamedValue オブジェクトを解放しなければなりません。
戻り値
特にありません。
関連項目
CORBA::NVList::add
CORBA::NVList::add_item
CORBA::NVList::add_value
CORBA::release
CORBA::ORB::create_operation_list
概要
指定されたオペレーションの引数のリストを作成して返します。
C++ バインディング
void CORBA::ORB::create_operation_list (
CORBA::OperationDef_ptr Oper,
CORBA::NVList_out List);
引数
Oper
作成中のリストのオペレーション定義。
List
新しく作成される引数リストのリファレンスを受け取ります。
説明
このメンバ関数は、動的起動インターフェイス (DII) で使用可能な形式で、指定されたオペレーションの引数のリストを作成して返します。このリストが不要になったときは、CORBA::release
メンバ関数でリストを解放しなければなりません。
戻り値
特にありません。
関連項目
CORBA::OBB::create_list
CORBA::NVList::add
CORBA::NVList::add_item
CORBA::NVList::add_value
CORBA::release
CORBA::ORB::create_policy
概要
指定された初期状態で特定の型の方針オブジェクトの新しいインスタンスを作成します。
C++ バインディング
void CORBA::ORB::create_policy (
in PolicyType type,
in any val);
引数
type
BEA WebLogic Enterprise バージョン 4.2 でサポートされている PolicyType
値は、BiDirPolicy::BIDIRECTIONAL_POLICY_
TYPE
のみです。
val
BEA WebLogic Enterprise バージョン 4.2 でサポートされている val
値は、BiDirPolicy::BidirectionalPolicyValue
のみです。
例外
PolicyError
この例外は、ORB::create_policy
オペレーションに渡されたパラメータ値に問題があることを示すために発生します。個別の例外と理由を次に示します。
説明
このオペレーションは、指定された初期状態で特定の型の方針オブジェクトの新しいインスタンスを作成するために呼び出します。方針の要求された型と内容を解釈できなかったために、create_policy
が新しい方針オブジェクトのインスタンス化に失敗した場合、適切な理由により方針エラー例外が発生します。
リモート・クライアントでは IIOP を使用しているため、コールバックを使用して BidirectionalPolicy
引数をリモート・クライアントに指定します。この引数は、コールバックを使用するネイティブ・クライアント、または BEA Tuxedo サーバには使用しません。これは、BEA Tuxedo ドメイン内部のマシンが個別に通信するためです。
GIOP 1.2 より前では、双方向方針は TCP/IP を使用する IIOP では利用できませんでした。GIOP 1.0 および 1.1 の通信は一方向のため、要求がクライアントからサーバに送信され、応答がサーバからクライアントに送信されるだけでした。サーバが要求をクライアント・マシンに戻す、つまりコールバックする場合、サーバ・マシンでは別の一方向の接続を確立する必要がありました (ここでいう「接続」とは、オペレーティング・システムのリソースのことであり、物理的な個別のワイヤや接続パスのことではありません。接続ではリソースを使用するので、接続数を最小限にすることが求められます)。
最新の BEA Tuxedo C++ ソフトウェアでは、GIOP 1.2 をサポートしています。これにより、要求の送信と受信の両方で TCP/IP 接続を再利用できるようになりました。接続を再利用することにより、リモート・クライアントが BEA Tuxedo ドメインにコールバック・リファレンスを送信するときにリソースを節約できます。共同クライアント/サーバでは、接続で BEA Tuxedo ドメインに要求を送信します。その際、コールバックの要求に接続を再利用することができます。接続を再利用しない場合、コールバック要求では別の接続を確立しなければなりません。
接続の再利用を可能にするために、ORB/POA が用意されています。ORB/POA は、コールバック・オブジェクト・リファレンスを作成します。このオブジェクト・リファレンスのサーバ (特にコールバックの場合は、リファレンスの作成元) では、セキュリティを考慮して再利用を無効にすることができます。つまり、このマシンのコールバック・サーバではセキュリティを必要としますが、リモート・サーバではセキュリティを必要としないため、このマシンからリモート・サーバにクライアントの要求を送信接続する際はセキュリティは不要になります。このように、接続ベースで部分的にセキュリティが確立されるので、別の接続を使用する場合に限って受信時のセキュリティを確立することができます。リモート・サーバでセキュリティが必要な場合、またはそのセキュリティに相互認証がある場合、通常はローカル・サーバで接続の再利用を有効にしても安全と認識されます。
プロセスがサーバ (この場合、共同クライアント/サーバ) として機能してオブジェクト・リファレンスを作成する場合は、常に接続の再利用はサーバ・エンドで行われます。そのため、接続を再利用することを ORB に通知する必要があります。これは、オブジェクト・リファレンスを作成する POA の方針を設定することによって行います。デフォルトの方針では、再利用は無効になっています。したがって、再利用するための方針オブジェクトを指定しない限り、POA では再利用ができません。
このデフォルトでは、CORBA バージョン 2.3 より前に記述されたコードとの下位互換性が維持されています。このようなコードでは、再利用が可能であることは認識されないので、再利用に関するセキュリティのインプリメンテーションを考慮する必要はありません。ただし、変更が加えられていないコードでは、ユーザがセキュリティを考慮して明示的に方針を転換しない限り、引き続き再利用は無効のままになります。
再利用を有効にするには、create_policy
オペレーションを使用して再利用を可能にする方針オブジェクトを作成し、その方針オブジェクトを POA 作成用の方針リストの一部として使用します。
戻り値
特にありません。
例
#include <BiDirPolicy_c.h>
BiDirPolicy::BidirectionalPolicy_var bd_policy;
CORBA::Any allow_reuse;
allow_reuse <<= BiDirPolicy::BOTH;
CORBA::Policy_var generic_policy =
orb->create_policy( BiDirPolicy::BIDIRECTIONAL_POLICY_TYPE
,
allow_reuse );
bd_policy = BiDirPolicy::BidirectionalPolicy::_narrow(
generic_policy );
上記の例では、create_poa
オペレーションに渡された PolicyList の中に bd_policy
を挿入しています。
CORBA::ORB::destroy
概要
指定された ORB を破棄します。
C++ バインディング
void destroy();
パラメータ
特にありません。
戻り値
特にありません。
説明
このメソッドを使用すると、ORB に関連付けられたリソースを再利用できるよう ORB を破棄できます。ORB を破棄した場合、同じ ORB ID で ORB_init
を別に呼び出すと、新しく作成された ORB のリファレンスが返されます。現在呼び出しているスレッドからアプリケーションで ORB::destroy
メソッドを呼び出した場合、BEA Tuxedo システムでは、OMG マイナー・コード 3 の BAD_INV_ORDER
システム例外が発生します。これは、ブロッキングによってデッドロックが発生するためです。
例
pOrb->destroy();
CORBA::ORB::get_ctx
概要
現在のスレッドと関連付けられているコンテキストを取得します。このメソッドは、マルチスレッド・サーバ・アプリケーションの開発をサポートします。
C++ バインディング
CORBA::ORB::Ctx get_ctx()
引数
特にありません。
戻り値
CORBA::ORB::Ctx
現在のスレッドに関連付けられているコンテキスト。
説明
このメソッドを使用すると、現在のスレッドに関連付けられているコンテキストを取得できます。このコンテキストは、アプリケーションによって作成および管理されるほかのスレッドを初期化するのに使用できます。
オブジェクトがスレッドを作成すると、ORB のこのオペレーションを呼び出して、スレッドに渡すことができるシステム・コンテキスト情報を取得します。このオペレーションは、既にコンテキストを持っているスレッドから呼び出す必要があります。たとえば、メソッドがディスパッチされたスレッドには、既にコンテキストがあります。
例
thread.context = TP::orb()->get_ctx();
関連項目
CORBA::ORB::set_ctx
CORBA::ORB::clear_ctx
CORBA::ORB::get_default_context
概要
デフォルト・コンテキストへのリファレンスを返します。
C++ バインディング
void CORBA::ORB::
get_default_context
(
CORBA::Context_out
ContextObj);
引数
ContextObj
デフォルト・コンテキストへのリファレンス。
説明
このメンバ関数は、デフォルト・コンテキストへのリファレンスを返します。このコンテキスト・リファレンスが不要になったときは、CORBA::release
メンバ関数でコンテキスト・リファレンスを解放しなければなりません。
戻り値
特にありません。
関連項目
CORBA::Context::get_one_value
CORBA::Context::get_values
CORBA::ORB::get_next_response
概要
次に完了する遅延同期要求を判別および報告します。
C++ バインディング
void CORBA::ORB::get_next_response (
CORBA::Request_out RequestObj);
引数
RequestObj
次に完了する要求へのリファレンス。
説明
このメンバ関数は、次に完了する要求へのリファレンスを返します。完了した要求がない場合、関数は要求が完了するまで待機します。このメンバ関数は、キューの次の要求を返します。これと対照的に CORBA::Request::get_response
メンバ関数は、特定の要求が完了するまで待機します。この要求が不要になったときは、CORBA::release
メンバ関数で要求を解放しなければなりません。
戻り値
特にありません。
関連項目
CORBA::ORB::poll_next_response
CORBA::Request::get_reponse
CORBA::ORB::inform_thread_exit
概要
アプリケーション管理のスレッドに関連付けられたリソースが解放可能であることを、BEA Tuxedo システムに通知します。このメソッドは、マルチスレッド・サーバ・アプリケーションの開発をサポートします。
C++ バインディング
void CORBA::ORB::inform_thread_exit(CORBA::TID
threadId
)
パラメータ
threadId
削除中のアプリケーション管理スレッドの論理スレッド ID。
戻り値
特にありません。
説明
このメソッドは、次の状態を BEA Tuxedo システムに通知します。
注記 このオペレーションは、アプリケーションが作成および管理するスレッドに対してのみ呼び出します。BEA Tuxedo システムによって管理されるディスパッチ・スレッドを指定するときは、このメソッドを呼び出さないでください。
例
pOrb->inform_thread_exit(thread.threadId);
CORBA::ORB::list_initial_services
概要
初期リファレンス・メカニズムで利用可能なリファレンスがどのオブジェクトにあるかを判別します。
C++ バインディング
typedef string ObjectId;
typedef sequence ObjectId
ObjectIdList;
ObjectIdList list_initial_services ();
引数
ObjectId
オブジェクト ID。
list_initial_services ()
オブジェクト型を定義します。
説明
このオペレーションは、初期リファレンス・メカニズムで利用可能なリファレンスがどのオブジェクトにあるかを判別するために、アプリケーションで使用されます。このオペレーションは、ObjectId
のシーケンスである ObjectIdList
を返します。ObjectId
には文字列型が付きます。
初期化時に利用可能にする必要のある各オブジェクトには、それを表す文字列値が割り当てられます。また、ID の定義に加えて、返されているオブジェクトの型が必ず定義されます。たとえば、InterfaceRepository
は 型 Repository
のオブジェクトを返し、NameService
は CosNamingContext
オブジェクトを返します。
戻り値
ObjectId
のシーケンス。
関連項目
CORBA::ORB::resolve_initial_references
CORBA::ORB::object_to_string
概要
オブジェクト・リファレンスの文字列表現を生成します。
C++ バインディング
char * CORBA::ORB::object_to_string (
CORBA::Object_ptr ObjRef);
引数
ObjRef
文字列として表すオブジェクト・リファレンス。
説明
このメンバ関数は、オブジェクト・リファレンスの文字列表現を生成します。呼び出し元のプログラムでは、文字列のメモリが不要になったら、CORBA::string_free
メンバ関数で解放する必要があります。
戻り値
指定されたオブジェクト・リファレンスを表す文字列。
例
CORBA::Object_ptr op = TP::create_object_reference(
"IDL:Teller:1.0", "MyTeller");
char* objstr = TP::orb()->object_to_string(op);
関連項目
CORBA::ORB::string_to_object
CORBA::string_free
CORBA::ORB::perform_work
概要
ORB がサーバ関連の作業を実行できるようにします。
C++ バインディング
void CORBA::ORB::perform_work ();
引数
特にありません。
例外
ORB がシャットダウンした後に、work_pending
および perform_work()
を呼び出すと、BAD_INV_ORDER
例外が発生します。アプリケーションでは、この例外を検出して、いつポーリング・ループを終了するかを判定します。
説明
このオペレーションは、メイン・スレッドによって呼び出された場合に ORB がサーバ関連の作業を実行できるようにします。それ以外の場合は、何の処理も行いません。
work_pending()
および perform_work()
オペレーションを使用すると、ORB などのアクティビティのメイン・スレッドを多重化する単純なポーリング・ループを記述できます。このようなループは主に、シングル・スレッドのサーバで必要になります。マルチスレッドのサーバでポーリング・ループが必要になるのは、メイン・スレッドの使用が必要なほかのコードと ORB の両方がある場合のみです。このようなポーリング・ループについては、以下の例を参照してください。
戻り値
特にありません。
関連項目
CORBA::ORB::work_pending
例
次に、ポーリング・ループの例を示します。
// C++
for (;;) {
if (orb->work_pending()) {
orb->perform_work();
}
// ほかの作業を実行させるか、
// またはスリープ状態にする
}
CORBA::ORB::poll_next_response
概要
完了した要求が未処理かどうかを判別します。
C++ バインディング
CORBA::Boolean CORBA::ORB::poll_next_response ();
引数
特にありません。
説明
このメンバ関数は、完了した要求が未処理 (保留中) かどうかを報告します。これは、報告をするだけで要求を削除するわけではありません。完了した要求が未処理の場合、次に CORBA::ORB::get_next_response
メンバ関数を呼び出すと、直ちに要求が確実に返されます。完了した要求に未処理のものがない場合、直ちに CORBA::ORB::poll_next_response
メンバ関数が返されます (ブロッキング)。
戻り値
完了した要求が未処理の場合、関数は CORBA_TRUE
を返します。
完了した要求に未処理のものがない場合、関数は CORBA_FALSE
を返します。
関連項目
CORBA::ORB::get_next_response
CORBA::ORB::resolve_initial_references
概要
初期サービスのオブジェクト・リファレンスを取得します。
C++ バインディング
Object resolve_initial_references ( in ObjectId identifier )
raises (InvalidName);
exception InvalidName {};
引数
identifier
リファレンスが必要なオブジェクトを識別する文字列。
説明
このオペレーションは、初期サービスのオブジェクト・リファレンスを取得するためにアプリケーションで使用されます。インターフェイスはネーミング・サービスの解決方法によって異なります。つまり、ObjectId
(文字列) をより複雑なネーミング・サービスの構成 (名前の構成要素の文字列のペアを含んだ構造体のシーケンス) に置き換えるかどうかで異なります。この簡素化の方法を実行すると、名前空間は 1 つのコンテキストに減ります。
ObjectId
は、リファレンスが必要なオブジェクトを識別する文字列です。初期リファレンスを取得するインターフェイスの簡素さを維持するには、限定したオブジェクトのセットのみに、上記の方法で見つかったリファレンスを格納します。ORB 識別子とは異なり、ObjectId
名前空間には慎重な管理が必要になります。そのために ORB では、後にこのインターフェイスを介してアプリケーションで必要になるサービスを定義したり、そのサービスの名前を指定したりできます。
現在、予約されている ObjectId
は、RootPOA
、POACurrent
、InterfaceRepository
、NameService
、TradingService
、SecurityCurrent
、TransactionCurrent
、および DynAnyFactory
です。
アプリケーションでは、resolve_initial_references
から返されるオブジェクト・リファレンスを ObjectId
で要求された型に限定します。たとえば、InterfaceRepository
の場合、返されるオブジェクトは Repository
型に限定されます。
戻り値
初期サービスのオブジェクト・リファレンス。
関連項目
CORBA::ORB::list_initial_services
CORBA::ORB::send_multiple_requests_deferred
概要
遅延同期要求のシーケンスを送信します。
C++ バインディング
void CORBA::ORB::send_multiple_requests_deferred (
const CORBA::ORB::RequestSeq & Reqs);
引数
Reqs
送信する要求のシーケンス。シーケンスへの要求リファレンスの挿入に関する詳細については、「形式」の CORBA::ORB::RequestSeq
を参照してください。
説明
このメンバ関数は、オペレーションが完了するのを待機せずに要求のシーケンスを送信し、呼び出し側に制御を返します。呼び出し側は、CORBA::ORB::poll_ next_response
、CORBA::ORB::get_next_response
、または CORBA::Rquest::get_response
、あるいはこれら 3 つをすべて使用して、オペレーションが完了したかどうか、および出力引数が更新されたかどうかを判別できます。
戻り値
特にありません。
関連項目
CORBA::Request::get_response
CORBA::ORB::get_next_response
CORBA::ORB::send_multiple_requests_oneway
CORBA::ORB::send_multiple_requests_oneway
概要
一方向の遅延同期要求のシーケンスを送信します。
C++ バインディング
void CORBA::ORB::send_multiple_requests_oneway (
const CORBA::RequestSeq & Reqs);
引数
Reqs
送信する要求のシーケンス。シーケンスへの要求リファレンスの挿入に関する詳細については、「形式」の CORBA::ORB::RequestSeq
を参照してください。
説明
このメンバ関数は、オペレーションが完了するのを待機せずに要求のシーケンスを送信し、呼び出し側に制御を返します。呼び出し側は、応答を待機せず、更新する出力引数も指定しません。
戻り値
特にありません。
関連項目
CORBA::ORB::send_multiple_requests_deferred
CORBA::ORB::set_ctx
概要
現在のスレッドのコンテキストを設定します。このメソッドは、マルチスレッド・サーバ・アプリケーションの開発をサポートします。
C++ バインディング
void set_ctx(CORBA::ORB::Ctx
aContext
)
パラメータ
aContext
現在のスレッドに関連付けるコンテキスト。
戻り値
特にありません。
説明
このメソッドは、現在のアプリケーション管理メソッドのコンテキストを設定します。指定するコンテキスト・パラメータは、BEA Tuxedo システムによって管理されている実行済みのスレッド、または初期化済みのアプリケーション管理スレッドで既に取得されています。
注記 set_ctx
メソッドは、BEA Tuxedo システムが管理しているスレッドでは呼び出さないでください。BEA Tuxedo システムでは、管理しているスレッドに対して適切にコンテキストを自動的に伝達します。BEA Tuxedo システムが管理しているスレッドで、このメソッドがアプリケーションによって呼び出された場合、BAD_PARAM
例外がスローされます。
例
TP::orb()->set_ctx(thread->context);
関連項目
CORBA::ORB::get_ctx()
CORBA::ORB::clear_ctx()
CORBA::ORB::string_to_object
概要
CORBA::ORB::object_to_string
オペレーションによって生成された文字列を変換し、対応するオブジェクト・リファレンスを返します。
C++ バインディング
Object string_to_object ( in string str );
引数
str
CORBA::ORB::object_to_string
オペレーションによって生成された文字列。
説明
このオペレーションは、CORBA::ORB::object_to_string
オペレーションによって生成された文字列を変換するためにアプリケーションで使用され、対応するオブジェクト・リファレンスを返します。
確実に ORB でオブジェクト・リファレンスの文字列形式を認識できるようにするには、文字列を生成する際にその ORB の object_to_string
オペレーションを使用する必要があります。string_to_object
オペレーションでは、IOR の URL、corbaloc、corbalocs、および corbanames の各形式をオブジェクト・リファレンスに変換できます。変換に失敗した場合、string_to_object
オペレーションによって、次のいずれかのマイナー・コードの BAD_PARAM
標準例外が発生します。
BadSchemeName
BadAddress
BadSchemeSpecificPart
ORB に完全準拠する場合、obj
がオブジェクトの有効なリファレンスであり、2 つのオペレーションが同じ ORB で実行されると、string_to_object(object_to_string(obj))
は同じオブジェクトの有効なリファレンスを返します。ORB がサポートする IOP に完全準拠する場合は、2 つのオペレーションが異なる ORB で実行されても設定は同じままになります。
戻り値
オブジェクト・リファレンスを返します。
関連項目
CORBA::ORB::object_to_string
CORBA::ORB::work_pending
概要
サーバ関連の作業を実行するために ORB でメイン・スレッドが必要かどうかを示す値を返します。
C++ バインディング
CORBA::boolean CORBA::ORB::work_pending ();
引数
特にありません。
説明
このオペレーションは、サーバ関連の作業を実行するために ORB でメイン・スレッドが必要かどうかを示す値を返します。
戻り値
結果が TRUE
の場合は、サーバ関連の作業を実行するために ORB でメイン・スレッドが必要であることを示します。結果が FALSE
の場合は、ORB でメイン・スレッドが不要であることを示します。
関連項目
CORBA::ORB::perform_work
ORB 初期化メンバ関数
ORB 初期化メンバ関数の C++ へのマッピングは次のとおりです。
class CORBA {
<appl-name> [-ORBid {BEA_IIOP | BEA_TOBJ} \
static CORBA::ORB_ptr ORB_init(int& argc, char** argv,
const char* orb_identifier = 0,
const char* -ORBport nnn);
[-ORBInitRef <ObjectID>=<ObjectURL> [*]]
[-ORBDefaultInitRef <ObjectURL>]
[-ORBport port-number] \
[-ORBsecurePort port-number] \
[-ORBminCrypto {0 | 40 | 56 | 128}] \
[-ORBmaxCrypto {0 | 40 | 56 | 128}] \
[-ORBmutualAuth] \
[-ORBpeerValidate {detect | warn | none}] \
[appl-options]
};
CORBA::ORB_init
概要
ORB のオペレーションを初期化します。
C++ バインディング
static CORBA::ORB_ptr ORB_init(
int& argc, char** argv,
const char* orb_identifier = 0);
引数
argc
argv
の文字列数。
argv
この引数は、文字列のアンバウンディッド配列 (char **
) として定義します。配列内の文字列数は、argc
パラメータで渡されます。
orb_identifier
orb_identifier
パラメータを指定すると、リモート・クライアントが "BEA_IIOP"
で明示的に指定され、「Tobj_Bootstrap」で定義されるネイティブ・クライアントが "BEA_TOBJ"
で明示的に指定されます。
説明
このメンバ関数は、ORB のオペレーションを初期化して、ORB へのポインタを返します。ORB でプログラミングする場合は、CORBA::release
メンバ関数を使用して、CORBA::ORB_ptr
ORB_init
から返された ORB ポインタに割り当てられたリソースを解放します。
返された ORB は、クライアントのタイプ (リモートまたはネイティブ) の処理方法とサーバのポート番号の処理方法を指定する 2 つの情報で初期化されています。クライアントのタイプは、orb_identifier
引数、argv 引数、またはシステム・レジストリで指定できます。サーバのポート番号は、argv
引数で指定できます。
通常、引数 argc
と argv
は、メイン・プログラムに渡されたパラメータと同じです。C++ での指定のように、これらのパラメータには、クライアントを起動したコマンド行の文字列トークンが格納されます。2 つの ORB オプションは、以下の例で示すように、トークンのペアをそれぞれ使用してコマンド行で指定できます。
クライアントのタイプ
ORB_init
関数は、次の手順で ORB のクライアントのタイプを判別します。
orb_identifier
引数が指定されている場合、ORB_init
は、文字列が
"BEA_IIOP"
か "BEA_TOBJ"
かによって、クライアントのタイプがネイティ
ブかリモートかを判別します。orb_identifier
文字列がある場合、argv
の
-ORBid
パラメータはすべて無視または削除されます。
orb_identifier
が指定されていないか、または明示的にゼロに指定されて
いる場合、ORB_init
は argc/argv
のエントリを確認します。argv
に
"-ORBid"
のエントリがある場合、次のエントリは、リモートまたはネイ
ティブを表す "BEA_IIOP"
か "BEA_TOBJ"
かのどちらかになります。このエ
ントリのペアが出現するのは、コマンド行に "-ORBid BEA_IIOP"
または
"-ORBid BEA_TOBJ"
のどちらかがある場合です。
argc/argv
で指定されていない場合、ORB_init
は、システム・レジストリ (BEA_IIOP
または BEA_TOBJ
) のデフォルトのクラ
イアントのタイプを使用します。システム・レジストリは、BEA Tuxedo の
インストール時に初期化されています。
サーバのポート
BEA Tuxedo リモート共同クライアント/サーバの場合、IIOP をサポートするために、サーバに対して作成されたオブジェクト・リファレンスにホストとポートを定義する必要があります。一時オブジェクト・リファレンスの場合、ORB で動的に任意のポートを取得できます。しかし、これは永続オブジェクト・リファレンスには適用できません。永続的なリファレンスの場合、ORB の再起動後に同じポートを指定する必要があります。つまり、ORB では、オブジェクト・リファレンスが作成されたのと同じポートで要求を受け付けなければなりません。このように、特定のポートを使用するように ORB をコンフィギュレーションする方法は複数あります。
通常、システム管理者は、動的範囲ではなくポート番号の「ユーザ」範囲からクライアントのポート番号を割り当てます。これにより、共同クライアント/サーバでポートの競合を防ぐことができます。
ポート番号を指定するために ORB_init
は、argv
パラメータの "-ORBport"
トークンとそれに続く数値のトークンを検索します。たとえば、クライアントの実行可能ファイルの名前が sherry の場合、コマンド行では次のようにサーバのポート 937 に指定します。
sherry -ORBport 937
ARGV パラメータの考慮事項
C++ の場合、argv
パラメータの処理順序がアプリケーションでは重要になります。アプリケーションで認識されない argv
パラメータは、確実にアプリケーションで処理不要にし、ORB 初期化関数を呼び出してから、残りのパラメータを処理するようにしなければなりません。したがって、ORB_init
を呼び出した後は、argv
および argc
パラメータは、ORB で認識された引数を削除するために変更されています。この際に重要なのは、ORB_init
関数が、argv
リストのパラメータのリファレンスの順序変更または削除しかできない点です。この制限が設けられたのは、一部の argv
リストの解放を試行したり、パラメータの argv
リストの拡張を試行したりすることで発生する可能性のあるメモリ管理上の問題を防ぐためです。このような理由から、argv
は、char**&
ではなく char**
として渡されます。
注記 CORBA::ORB_init
から返されたポインタに割り当てられたリソースを解放するには、CORBA::release
メンバ関数を使用します。
戻り値
CORBA::ORB
へのポインタ。
例外
特にありません。
ORB
概要
BEA Tuxedo の CORBA オブジェクトにアクセスしたり、CORBA オブジェクトを提供するために、BEA Tuxedo CORBA C++ ORB に基づいてアプリケーションをコンフィギュレーションします。
構文
<appl-name> [-ORBid {BEA_IIOP | BEA_TOBJ} \
[-ORBInitRef <ObjectID>=<ObjectURL> [*]]
[-ORBDefaultInitRef <ObjectURL>]
[-ORBport port-number] \
[-ORBsecurePort port-number] \
[-ORBminCrypto {0 | 40 | 56 | 128}] \
[-ORBmaxCrypto {0 | 40 | 56 | 128}] \
[-ORBmutualAuth] \
[-ORBpeerValidate {detect | warn | none}] \
[appl-options]
説明
BEA Tuxedo CORBA C++ ORB は、BEA Tuxedo に組み込まれているライブラリです。このライブラリを使用すると、IIOP または IIOP-SSL を使用して BEA Tuxedo のオブジェクトにアクセスしたり、このオブジェクトを提供するための CORBA ベースのアプリケーションを開発できます。また、ORB のコマンド行のオプションを使用すると、カスタマイズが可能になります。
パラメータ
[-ORBid {BEA_IIOP | BEA_TOBJ}]
値 BEA_IIOP
は、IIOP または IIOP-SSL プロトコルで通信するクライアント環境とサーバ環境をサポートするように、ORB がコンフィギュレーションされることを明示的に指定します。
値 BEA_TOBJ
は、BEA Tuxedo ドメイン内で TGIOP プロトコルでのみ通信可能なネイティブ・クライアント環境をサポートするように、ORB がコンフィギュレーションされることを明示的に指定します。
上記のパラメータを指定しない場合、ORB は、ORB 自身がデプロイされ、その環境で使用するようにコンフィギュレーションされる環境を検出します。
[-ORBInitRef
ObjectId
=
ObjectURL
]
-ORBInitRef
は、ORB 初期リファレンス引数です。この引数では、初期サービスに対して任意のオブジェクト・リファレンスを指定できます。
ObjectID
は、CORBA 仕様で定義されるサービスの既知のオブジェクト ID を表します。このメカニズムにより、ORB のインストール時に定義しなかった、新しい初期サービスの Object ID で ORB をコンフィギュレーションできます。
ObjectURL
には、CORBA 仕様で定義する CORBA::ORB::string_to_object
オペレーションでサポートされている任意の URL スキーマを指定できます。URL の構文に誤りがある場合、またはインプリメンテーション定義方法が無効と判定された場合、CORBA::ORB_init
によって CORBA::BAD_PARAM
標準例外が発生します。表 14-1 では、この例外の一覧を示します。
[-ORBDefaultInitRef <ObjectURL>]
-ORBDefaultInitRef
は、ORB のデフォルトの初期リファレンス引数です。この引数は、-ORBInitRef
で明示的に指定されていない初期リファレンスの解決に役立ちます。また、現在の Tobj_Bootstrap
オブジェクトに指定されている IIOP リスナ・アドレスと同様の機能を備えています。
-ORBInitRef
引数とは異なり、-ORBDefaultInitRef
では URL が必要です。この URL は、初期オブジェクト・リファレンスを識別するための新しい URL を生成します。この URL の後にはスラッシュ文字 (/) と文字列化されたオブジェクト・キーを付けます。次に、デフォルトの初期リファレンス引数の指定例を示します。
-ORBDefaultInitRef corbaloc:555objs.com
サービスの初期リファレンスを取得するために、ORB::resolve_initial_references("NotificationService")
を呼び出すと、次の新しい URL が生成されます。
corbaloc:555objs.com/NotificationService
ORB::resolve_initial_references
オペレーションをインプリメントすると、新しい URL が生成され、サービスの初期リファレンスを取得するために CORBA::ORB::string_to_object
が呼び出されます。
-ORBDefaultInitRef
引数の値として指定した URL には、複数の場所を指定できます。これは、Tobj_Bootstrap
オブジェクトで使用される場所のリストに提供されている機能とほぼ同じです。この場合、ORB では URL の構文規則に基づいて URL の場所を処理します。次に、デフォルトの初期リファレンス引数の指定例を示します。
-ORBDefaultInitRef corbaloc:555objs.com,555Backup.com
サービスの初期リファレンスを取得するために、ORB::resolve_initial_references("NameService")
を呼び出すと、次の新しい URL のどちらかが生成されます。
corbaloc:555objs.com/NameService
または
corbaloc:555Backup.com/NameService
生成された URL は、サービスの初期リファレンスを取得するために、CORBA::ORB::string_to_object
に渡されます。
[-ORBminCrypto [0 | 40 | 56 | 128]]
ネットワーク・リンクを確立するときに必要最低限の暗号化レベルです。ゼロ (0) は、暗号化が行われないことを示し、40、56、および 128 は暗号化キーの長さ (ビット単位) を指定します。ここで指定された最低レベルの暗号化が行われないと、リンクの確立は失敗します。
デフォルト値は 0 です。
[-ORBmaxCrypto [0 | 40 | 56 | 128]]
ネットワーク・リンクを確立するときに許容される最高の暗号化レベルです。ゼロ (0) は、暗号化が行われないことを示し、40、56、および 128 は暗号化キーの長さ (ビット単位) を指定します。デフォルトは、ライセンスで指定されている機能すべてです。-ORBmaxCrypto
または -ORBmaxCrypto
オプションは、国際版または米国/カナダ版の BEA Tuxedo セキュリティ・アド・オン・パッケージがインストールされている場合にのみ使用できます。
[-ORBmutualAuth]
リモート・アプリケーションから SSL 接続を受け付けるときに証明書ベースの認証を有効にするかどうかを指定します。
-ORBmutualAuth
オプションは、国際版または米国/カナダ版の BEA Tuxedo セキュリティ・アド・オン・パッケージがインストールされている場合にのみ使用できます。
[-ORBpeerValidate {detect | warn | none}]
BEA Tuxedo ORB によって開始されたアウトバウンド接続のピアのデジタル証明書を、セキュア・ソケット・レイヤ (SSL) プロトコル・ハンドシェークの一部として受信したときに、BEA Tuxedo CORBA ORB がどのように動作するかを指定します。検証は安全な接続のイニシエータのみが行います。検証では、サーバのデジタル証明書にあるドメイン名の指定と同じネットワーク・アドレスにピア・サーバが実際にあるかを確認します。この検証は、技術的には SSL プロトコルの一部ではなく、Web ブラウザで行われているチェックと同じものです。
値が detect
の場合、BEA Tuxedo CORBA ORB は、接続に使用されるオブジェクト・リファレンスで指定されたホストがピアのデジタル証明書で指定されたドメイン名と一致するかを確認します。照合に失敗した場合、ORB はピアの認証を拒否し、接続を破棄します。このチェックによって、介在者の攻撃から保護します。
値が warn
の場合、BEA Tuxedo CORBA ORB は、接続に使用されるオブジェクト・リファレンスで指定されたホストがピアのデジタル証明書で指定されたドメイン名と一致するかを確認します。照合に失敗した場合、ORB はユーザ・ログにメッセージを書き込み、接続処理を続行します。
値が none の場合、BEA Tuxedo CORBA ORB は、ピアの検証を行わずに接続処理を続行します。
-ORBpeerValidate
オプションは、国際版または米国/カナダ版の BEA Tuxedo セキュリティ・アド・オン・パッケージがインストールされている場合にのみ使用できます。
値を指定しない場合は、デフォルトの detect
が指定されます。
[-ORBport port-number]
リモート CORBA クライアントからの接続を受け付けるために、ORB で使用するネットワーク・アドレスを指定します。通常、システム管理者は、動的範囲ではなくポート番号の「ユーザ」範囲からクライアントのポート番号を割り当てます。これにより、共同クライアント/サーバでポートの競合を防ぐことができます。
これは、BEA Tuxedo CORBA ORB が永続オブジェクト・リファレンスを作成するための必須パラメータです。永続オブジェクト・リファレンスでは、ORB が再起動した場合でも、オブジェクト・リファレンス内に格納されているのと同じポート番号を指定する必要があります。一時オブジェクト・リファレンスの場合は、ORB で動的に任意のポートを取得できます。
port-number
には、BEA Tuxedo CORBA ORB プロセスが接続要求の受信をリッスンする TCP ポート番号を指定します。port-number
には、0 から 65535 までの数字を指定します。
注記 Java Tobj_Bootstrap
オブジェクトでは、port-number
を格納するのに short
型を使用します。そのため、Java クライアントからの接続をサポートする場合は、0 〜 32767 の範囲内で port-number
を指定する必要があります。
[-ORBsecurePort port-number]
IIOP リスナ/ハンドラでセキュア・ソケット・レイヤ・プロトコルを使用して安全な接続をリッスンするために使用するポート番号を指定します。ポート番号を指定せずにコマンド行のオプションを指定した場合、OMG で割り当てられたポート番号 684 が SSL 接続に使用されます。
port-number
には、BEA Tuxedo CORBA ORB プロセスが接続要求の受信をリッスンする TCP ポート番号を指定します。port-number
には、0 から 65535 までの数字を指定します。
注記 Java Tobj_Bootstrap
オブジェクトでは、port-number
を格納するのに short
型を使用します。そのため、Java クライアントからの接続をサポートする場合は、0 〜 32767 の範囲内で port-number
を指定する必要があります。
BEA Tuxedo CORBA ORB への接続に安全なものだけを有効にするには、管理者は -ORBport
と -ORBsecurePort
で指定するポート番号を同じ値にコンフィギュレーションします。
-ORBsecurePort
オプションは、国際版または米国/カナダ版の BEA Tuxedo セキュリティ・アド・オン・パッケージがインストールされている場合にのみ使用できます。
移植性
BEA Tuxedo CORBA ORB は、UNIX および Microsoft Windows 2000 オペレーティング・システム上で BEA Tuxedo に組み込まれているクライアントまたはサーバとしてサポートされています。また、Windows 98 オペレーティング上で BEA Tuxedo に組み込まれているクライアントとしてもサポートされています。
相互運用性
BEA Tuxedo CORBA ORB は、TCP/IP 接続で GIOP プロトコル・バージョン 1.0、1.1、または 1.2 をサポートする、ORB 準拠のすべての IIOP と相互運用できます。また、BEA Tuxedo CORBA ORB は、オブジェクト・リファレンスで TAG_SSL_SEC_TRANS
タグ付きコンポーネントの使用をサポートし、セキュア・ソケット・レイヤ・プロトコルのバージョン 3 をサポートする、ORB 準拠のすべての IIOP-SSL と相互運用できます。
例:
C++ コード例
ChatClient -ORBid BEA_IIOP -ORBport 2100
-ORBDefaultInitRef corbaloc:piglet:1900
-ORBInitRef TraderService=corbaloc:owl:2530
-ORBsecurePort 2100
-ORBminCrypto 40
-ORBmaxCrypto 128
TechTopics
Java コード例
java -DORBDefaultInitRef=corbalocs:piglet:1900
.....-DORBInitRef=TraderService=corbaloc:owl:2530
-Dorg.omg.CORBA.ORBPort=1948
-classpath=%CLASSPATH% client
関連項目
ISL
Policy メンバ関数
方針は、オペレーションに関連する ORB に特定の選択を通知するオブジェクトです。この情報には、CORBA モジュールで定義された Policy インターフェイスから生成されたインターフェイスを使用する、構造化された方法でアクセスします。
注記 以下の CORBA::Policy
オペレーションおよび構造体は、通常の場合、プログラマにとっては必須ではありません。通常、生成されたインターフェイスには、仕様に関連する情報が格納されています。方針オブジェクトは、特定のファクトリ、または CORBA::create_policy
オペレーションを使用することで作成できます。
方針オブジェクトの C++ へのマッピングは次のとおりです。
class CORBA
{
class Policy
{
public:
copy();
void destroy();
}; //Policy
typedef sequence<Policy>PolicyList;
}; // CORBA
PolicyList
には、その他の C++ シーケンス・マッピングと同じものを使用します。シーケンスの使用方法については、「シーケンス」を参照してください。
関連項目: POA Policy および CORBA::ORB::create_policy
CORBA:Policy::copy
概要
方針オブジェクトをコピーします。
C++ バインディング
CORBA::Policy::copy();
引数
特にありません。
説明
このオペレーションは、方針オブジェクトをコピーします。コピーでは、方針とドメインまたはオブジェクトとの間にあった関係は保持されません。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
戻り値
特にありません。
CORBA::Policy::destroy
概要
方針オブジェクトを破棄します。
C++ バインディング
void CORBA::Policy::destroy();
引数
特にありません。
例外
方針オブジェクトが破棄できないと判定された場合、CORBA::NO_PERMISSION
例外が発生します。
説明
このオペレーションは、方針オブジェクトを破棄します。破棄の可否を判定するのは方針オブジェクトです。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
戻り値
特にありません。
PortableServer メンバ関数
PortableServer メンバ関数の C++ へのマッピングは次のとおりです。
// C++
class PortableServer
{
public:
class LifespanPolicy;
class IdAssignmentPolicy;
class POA::find_POA
class reference_to_id
class POAManager;
class POA;
class Current;
class virtual ObjectId
class ServantBase};
ObjectId
特定の抽象 CORBA オブジェクトを識別するために、POA およびユーザ指定のインプリメンテーションで使用される値です。ObjectId
値は、POA またはインプリメンテーションで割り当ておよび管理できます。ObjectId
値はリファレンスによってカプセル化されるので、クライアントからは隠ぺいされます。ObjectId
には標準の形式がないため、POA では未解釈のオクテット・シーケンスとして管理されます。
以下の節では、これ以外のクラスについて説明します。
PortableServer::POA::activate_object
概要
個別のオブジェクトを明示的に活性化します。
C++ バインディング
ObjectId * activate_object (
Servant p_servant);
引数
p_servant
インターフェイスの C++ インプリメンテーション・クラスのインスタンス。
例外
指定のサーバントが既にアクティブ・オブジェクト・マップにある場合、ServantAlreadyActive
例外が発生します。
注記 POA でサポートされていない方針を使用する場合、ほかの例外も発生する可能性があります。
説明
このオペレーションは、ObjectId
を生成し、ObjectId
および指定のサーバントをアクティブ・オブジェクト・マップに入れることにより、個別のオブジェクトを明示的に活性化します。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
戻り値
関数が成功した場合、ObjectId
を返します。
例
次の例では、最初の構造体がユーザ定義のコンストラクタでサーバントを作成します。2 番目の構造体は、オブジェクトでの要求の処理にサーバントが使用可能であることを POA に通知します。POA は、そのオブジェクト用に作成した ObjectId
を返します。3 番目の文は、POA に IMPLICIT_ACTIVATION
方針 (BEA Tuxedo ソフトウェアのバージョン 4.2 でのみサポートされている方針) があると想定し、オブジェクトへのリファレンスを返します。これにより、このリファレンスは呼び出し用にクライアントで処理が可能になります。クライアントがリファレンスを呼び出すと、作成されたばかりのサーバントに要求が返されます。
MyFooServant* afoo = new MyFooServant(poa,27);
PortableServer::ObjectId_var oid =
poa->activate_object(afoo);
Foo_var foo = afoo->_this();
PortableServer::POA::activate_object_with_id
概要
指定の ObjectId
で個別のオブジェクトを活性化します。
C++ バインディング
void activate_object_with_id (
const ObjectId & id,
Servant p_servant);
引数
id
そのオペレーションが呼び出されたオブジェクトを識別する ObjectId
。
p_servant
インターフェイスの C++ インプリメンテーション・クラスのインスタンス。
例外
ObjectId
値で示された CORBA オブジェクトが POA で既に活性化されている場合、ObjectAlreadyActive
例外が発生します。
サーバントが既にアクティブ・オブジェクト・マップにある場合、ServantAlreadyActive
例外が発生します。
注記 POA でサポートされていない方針を使用する場合、ほかの例外も発生する可能性があります。
POA に SYSTEM_ID
方針があり、ObjectId
値をシステムが生成しなかったり、POA に対して生成されなかったことを検出した場合、BAD_PARAM
システム例外が発生する可能性があります。こういった無効の ObjectId
値をすべて検出するのに、ORB は特に必要ではありません。ただし、POA に対してシステムによって以前に生成された ObjectId
値を持つ SYSTEM_ID
方針が POA にある場合、または以前にインスタンス化した同じ POA について PERSISTENT
方針が POA にある場合、移植可能なアプリケーションでは POA の activate_object_with_id
を呼び出さないでください。
説明
このオペレーションは、アクティブ・オブジェクト・マップで指定の ObjectId
と指定のサーバントとを関連付けます。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
戻り値
特にありません。
例
MyFooServant* afoo = new MyFooServant(poa, 27);
PortableServer::ObjectId_var oid =
PortableServer::string_to_ObjectId("myLittleFoo");
poa->activate_object_with_id(oid.in(), afoo);
Foo_var foo = afoo->_this();
PortableServer::POA::create_id_assignment_policy
概要
IdAssignmentPolicy
インターフェイスを持つオブジェクトを取得します。これにより、ユーザは POA::create_POA
オペレーションにオブジェクトを渡すことができます。
C++ バインディング
IdAssignmentPolicy_ptr
PortableServer::POA::create_id_assignment_policy (
PortableServer::
IdAssignmentPolicyValue value)
引数
value
値は、ObjectId
がアプリケーションによってのみ割り当てられることを示す PortableServer::USER_ID
か、または ObjectId
がシステムによってのみ割り当てられることを示す PortableServer::SYSTEM_ID
のどちらかです。
説明
POA::create_id_assignment_policy オペレーションは、IdAssignmentPolicy インターフェイスを持つオブジェクトを取得します。この方針に POA::create_POA オペレーションが渡されると、この方針は作成される POA の ObjectId
をアプリケーションが生成するか、ORB が生成するかを指定します。指定可能な値は次のとおりです。
PortableServer::USER_ID
− アプリケーションのみが、その POA で作成されるオブジェクトに ObjectId
を割り当てます。 PortableServer::SYSTEM_ID
− POA のみが、その POA で作成されるオブジェクトに ObjectId
を割り当てます。POA に PERSISTENT
LifespanPolicy
もある場合は、割り当てられた ObjectId
は、同じ POA のすべてのインスタンスを通じて一意でなければなりません。IdAssignmentPolicy
が POA 作成時に指定されない場合、SYSTEM_ID
がデフォルトに指定されます。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
戻り値
Id Assignment
方針を返します。
PortableServer::POA::create_lifespan_policy
概要
LifespanPolicy インターフェイスを持つオブジェクトを取得します。これにより、ユーザは POA::create_POA オペレーションにオブジェクトを渡すことができます。
C++ バインディング
LifespanPolicy_ptr
PortableServer::POA::create_lifespan_policy (
PortableServer::
LifespanPolicyPolicyValue value)
引数
value
値は、ObjectId
がアプリケーションによってのみ割り当てられることを示す PortableServer::USER_ID
か、または ObjectId
がシステムによってのみ割り当てられることを示す PortableServer::SYSTEM_ID
のどちらかです。
説明
POA::create_lifespan_policy
オペレーションで LifespanPolicy
インターフェイスを持つオブジェクトを取得します。このオブジェクトは、POA::create_POA
オペレーションに渡され、作成された POA でインプリメントされるオブジェクトの寿命を指定します。指定可能な値は次のとおりです。
TRANSIENT
− POA でインプリメントされたオブジェクトは、最初に作成されたときのプロセスの存続期間を延ばすことができません。POA が非活性化されると、その POA から生成されたオブジェクト・リファレンスを使用した場合、OBJECT_NOT_EXIST
例外が発生します。 PERSISTENT
− POA でインプリメントされたオブジェクトは、最初に作成されたときのプロセスの存続期間を延ばすことができます。 LifespanPolicy
オブジェクトが POA::create_POA
に渡されない場合、寿命方針のデフォルトは TRANSIENT
に設定されます。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
戻り値
LifespanPolicy
を返します。
PortableServer::POA::create_POA
概要
新しい POA を対象の POA の子として作成します。
C++ バインディング
POA_ptr
PortableServer::create_POA (
const char * adapter_name,
POAManager_ptr a_POAManager,
const CORBA::PolicyList & policies)
引数
adapter_name
作成する POA の名前。
a_POAManager
新しい POAManager が作成されて新しい POA に関連付けられることを示す NULL 値か、または既存の POAManager へのポインタ。
policies
新しい POA に関連付ける方針オブジェクト。
例外
対象の POA に指定の名前を持つ子 POA が既にある場合に発生します。
指定の方針オブジェクトが ORB インプリメンテーションで無効な場合、指定した方針オブジェクトに競合がある場合、または指定の方針オブジェクトで事前の管理作業が必要にもかかわらず実行していない場合に発生します。この例外では、最初に方針オブジェクトと競合が生じた方針パラメータ値のインデックスが記述されます。
IMP_LIMIT
CORBA::ORB_init オペレーションで説明したポートの設定を行わずに、PERSISTENT
の LifespanPolicy で POA の作成をプログラムで試行した場合に発生します。
説明
このオペレーションは、新しい POA を対象の POA の子として作成します。指定する名前は一意でなければなりません。この名前で同じ親 POA を持つほかの POA と新しい POA とを識別します。
a_POAManager
パラメータが NULL の場合、新しい PortableServer::POAManager
オブジェクトが作成され、新しい POA に関連付けられます。それ以外の場合、指定した POAManager
オブジェクトは新しい POA に関連付けられます。POAManager
オブジェクトは、属性名 the_POAManager
を使用して取得できます。
指定した方針オブジェクトは POA に関連付けられ、その動作の制御に使用されます。方針オブジェクトは、このオペレーションが戻り値を返す前にコピーされます。したがって、アプリケーションでは POA の使用中にいつでも方針オブジェクトを破棄できます。方針は、親 POA から継承されません。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
戻り値
作成された POA へのポインタを返します。
例
例 1
この例では、子 POA は親 POA と同じマネージャを使用します。この場合、子 POA の状態は親と同じになります。たとえば、親が活性化されていれば、子も活性化されます。
CORBA::PolicyList policies(2);
policies.length (1);
policies[0] = rootPOA->create_lifespan_policy(
PortableServer::LifespanPolicy::TRANSIENT);
PortableServer::POA_ptr poa =
rootPOA->create_POA("my_little_poa",
rootPOA->the_POAManager, policies);
例 2
この例では、新しい POA がルート POA の子として作成されています。
CORBA::PolicyList policies(2);
policies.length (1);
policies[0] = rootPOA->create_lifespan_policy(
PortableServer::LifespanPolicy::TRANSIENT);
PortableServer::POA_ptr poa =
rootPOA->create_POA("my_little_poa",
PortableServer::POAManager::_nil(), policies);
PortableServer::POA::create_reference
概要
POA 生成の ObjectId
値と指定のインターフェイス・リポジトリ ID をカプセル化するオブジェクト・リファレンスを作成します。
C++ バインディング
CORBA::Object_ptr create_reference (
const char * intf)
引数
intf
インターフェイス・リポジトリ ID。
例外
このオペレーションには、値 SYSTEM_ID
を持つ LifespanPolicy が必要です。この LifespanPolicy がない場合、PortableServer::WrongPolicy
例外が発生します。
説明
create_reference
オペレーションは、POA 生成の ObjectId
値と指定のインターフェイス・リポジトリ ID をカプセル化するオブジェクト・リファレンスを作成します。このオペレーションは、POA に関連付けられた情報およびオペレーションのパラメータからのリファレンスを構成するために必要な情報を収集します。このオペレーションは、リファレンスを作成するだけで、リファレンスと活性化されたサーバントとを関連付けるわけではありません。作成したリファレンスは、クライアントに渡されます。これにより、生成された ObjectId
を使用して、そのリファレンスの以降の要求を POA に返すことができます。生成された ObjectId
値を取得するには、作成したリファレンスで POA::reference_to_id
を呼び出します。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
戻り値
オブジェクトへのポインタを返します。
PortableServer::POA::create_reference_with_id
概要
指定の ObjectId
とインターフェイス・リポジトリ ID 値をカプセル化するオブジェクト・リファレンスを作成します。
C++ バインディング
CORBA::Object_ptr create_reference_with_id (
const ObjectId & oid,
const char * intf)
引数
oid
そのオペレーションが呼び出されたオブジェクトを識別する ObjectId
。
intf
インターフェイス・リポジトリ ID。
例外
POA に SYSTEM_ID
値を持つ LifespanPolicy があり、ObjectId
がシステムまたは POA によって生成されなかったことをその POA が検出した場合、BAD_PARAM システム例外が発生します。
説明
create_reference
オペレーションは、指定の ObjectId
とインターフェイス・リポジトリ ID 値をカプセル化するオブジェクト・リファレンスを作成します。このオペレーションは、POA に関連付けられた情報およびオペレーションのパラメータからリファレンスを構成するために必要な情報を収集します。このオペレーションは、リファレンスを作成するだけで、リファレンスと活性化されたサーバントとを関連付けるわけではありません。作成したリファレンスは、クライアントに渡されます。これにより、そのリファレンスの以降の要求で、指定の ObjectId
を持つ同じPOA に呼び出しを返すことができます。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
戻り値
Object_ptr
を返します。
例
PortableServer::ObjectId_var oid =
PortableServer::string_to_ObjectId("myLittleFoo");
CORBA::Object_var obj = poa->create_reference_with_id(
oid.in(), "IDL:Foo:1.0");
Foo_var foo = Foo::_narrow(obj);
PortableServer::POA::deactivate_object
概要
アクティブ・オブジェクト・マップから ObjectId
を削除します。
C++ バインディング
void deactivate_object (
const ObjectId & oid)
引数
oid
オブジェクトを識別する ObjectId
。
例外
指定の ObjectId
に関連付けられた活性化されたオブジェクトがない場合、ObjectNotActive
例外が発生します。
説明
このオペレーションは、oid
パラメータで指定された ObjectId
およびそのサーバントをアクティブ・オブジェクト・マップから削除します。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
戻り値
特にありません。
PortableServer::POA::destroy
概要
POA およびすべての下位 POA を破棄します。
C++ バインディング
void destroy (
CORBA::Boolean etherealize_objects,
CORBA::Boolean wait_for_completion)
引数
etherealize_objects
このリリースの BEA Tuxedo では、この引数は FALSE
に指定します。
wait_for_completion
この引数は、オペレーションが直ちに戻り値を返すかどうかを示します。
説明
このオペレーションは、POA およびすべての下位 POA を破棄します。POA とその名前は、同じプロセスで後から再作成できます。ただし、POAManager::deactivat
e オペレーションで同じプロセスによる関連付けられた POA の再作成を無効にしている場合は除きます。
POA が破棄された場合、実行を開始した要求については、完了するまで処理が続行されます。実行を開始していない要求については、それが新しく受け取られ、POA がないような状態で処理されます。そのため、要求は拒否され、OBJECT_NON_EXIST
例外が発生します。
wait_for_completion
パラメータが TRUE
の場合、プロセス内の要求がすべて完了し、etherealize
の呼び出しがすべて完了した後にのみ、destroy オペレーションは戻り値を返します。それ以外の場合、destroy
オペレーションは POA の破棄後に戻り値を返します。
注記 このリリースの BEA Tuxedo では、マルチスレッドをサポートしていません。そのため、オブジェクト呼び出しのコンテキストで呼び出しを行う場合、wait_for_completion
は TRUE
に指定しないでください。この指定を行うと、POA はそれが実行中のときに自身を解放できなくなります。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
戻り値
特にありません。
PortableServer::POA::find_POA
概要
指定の名前を持つ子 POA へのリファレンスを返します。
C++ バインディング
void find_POA( in string adapter_name, in boolean activate_it);
引数
adapter_name
対象の POA へのリファレンス。
active_it
このバージョンの BEA Tuxedo では、このパラメータは FALSE
に指定しなければなりません。
例外
AdapterNonExistent
この例外は、POA が存在しない場合に発生します。
説明
POA に指定の名前を持つ子 POA がある場合、その子 POA を返します。指定の名前を持つ子 POA が存在せず、activate_it
パラメータの値が FALSE
の場合、AdapterNonExistent
例外が発生します。
戻り値
特にありません。
PortableServer::POA::reference_to_id
概要
指定の reference
によってカプセル化された ObjectId
値を返します。
C++ バインディング
ObjectId reference_to_id(in Object reference);
引数
reference
オブジェクトへのリファレンスを指定します。
例外
WrongAdapter
その POA によってリファレンスが作成されなかった場合に発生します。
説明
このオペレーションは、指定の reference
によってカプセル化された ObjectId
値を返します。このオペレーションを実行中の POA によってリファレンスが作成された場合にのみ、このオペレーションは有効です。リファレンスで示されたオブジェクトが活性化されているかどうかは、このオペレーションの成否には関係ありません。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
戻り値
指定の reference
によってカプセル化された ObjectId
値を返します。
PortableServer::POA::the_POAManager
概要
POA に関連付けられた POA マネージャを識別します。
C++ バインディング
POAManager_ptr the_POAManager ();
引数
特にありません。
説明
この属性は読み取り専用で、POA に関連付けられた POA マネージャを識別します。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
戻り値
特にありません。
例
poa->the_POAManager()->activate();
この文では、POA の POAManager の状態を活性化に設定します。POAManager は、POA で要求を受け付けるときに必要になります。POA は親があるので、ルート POA ではありません。POA の親の POAManager もすべて、この文で活性化状態にして有効にする必要があります。
PortableServer::ServantBase::_default_POA
概要
サーバントに関連付けられた POA へのオブジェクト・リファレンスを返します。
C++ バインディング
class PortableServer
}
{
class ServantBase
{
public:
virtual POA_ptr _default_POA();
}
引数
特にありません。
説明
C++ サーバントはすべて、PortableServer::ServantBase
から継承するので、_default_POA
関数も継承します。このバージョンの BEA Tuxedo では、通常、_default_POA
を使用する必要はありません。
この関数のデフォルトのインプリメンテーションでは、このプロセスのデフォルト ORB のルート POA へのオブジェクト・リファレンスを返します。これは、ORB::resolve_initial_references("RootPOA")
を呼び出したときの戻り値と同じです。C++ サーバントは、この定義を無効にして目的に応じた POA を返すことができます。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
戻り値
サーバントに関連付けられたデフォルト POA。
POA Current メンバ関数
CORBA::Current
から生成される PortableServer::Current
インターフェイスは、メソッドが呼び出されたオブジェクトの ID にアクセスしてメソッド・インプリメンテーションを提供します。
PortableServer::Current::get_object_id
概要
呼び出されるオブジェクトをそのコンテキストで識別する ObjectId
を返します。
C++ バインディング
ObjectId * get_object_id ();
引数
特にありません。
例外
POA ディスパッチ・オペレーションのコンテキストの外部で呼び出された場合、PortableServer::NoContext
例外が発生します。
説明
このオペレーションは、呼び出されるオブジェクトをそのコンテキストで識別する PortableServer::ObjectId
を返します。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
戻り値
このオペレーションは、呼び出されるオブジェクトをそのコンテキストで識別する ObjectId
を返します。
PortableServer::Current::get_POA
概要
呼び出されるオブジェクトをそのコンテキストでインプリメントする POA へのリファレンスを返します。
C++ バインディング
POA_ptr get_POA ();
引数
特にありません。
例外
POA ディスパッチ・オペレーションのコンテキストの外部で呼び出された場合、PortableServer::NoContext
例外が発生します。
説明
このオペレーションは、呼び出されるオブジェクトをそのコンテキストでインプリメントする POA へのリファレンスを返します。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
戻り値
このオペレーションは、呼び出されるオブジェクトをそのコンテキストでインプリメントする POA へのリファレンスを返します。
POAManager メンバ関数
各 POA オブジェクトには、関連付けられた POAManager
オブジェクトがあります。POAManager は、1 つまたは複数の POA オブジェクトと関連付けることができます。POAManager は、関連付けられた POA の処理状態をカプセル化します。POA マネージャのオペレーションを使用すると、アプリケーションで POA の要求をキューに登録したり、破棄したり、POA を非活性化したりできます。
POA マネージャは、暗黙的に作成および破棄されます。POA の作成時に POAManager オブジェクトを明示的に指定しない限り、POAManager は POA の作成時に作成され、自動的に POA に関連付けられます。POAManager オブジェクトは、関連付けられた POA がすべて破棄されたときに暗黙的に破棄されます。
POAManager には、活性化、非活性化、保持、破棄の 4 つの処理状態があります。この処理状態によって、関連付けられた POA の機能、および POA が受け取った要求を破棄するかどうかが決まります。
POAManager は保持状態で作成されます。この状態では、POAManager が活性化状態に移行するまで、POA の呼び出しはすべてキューに登録されます。このバージョンの BEA Tuxedo では、活性化または非活性化にだけ状態を移行することができます。したがって、このバージョンでは、保持状態に戻したり、破棄状態に移行したりすることができません。
PortableServer::POAManager::activate
概要
POAManager の状態を活性化に変更します。
C++ バインディング
void activate();
引数
特にありません。
例外
POAManager の状態が非活性化のときにこのオプションを使用すると、PortableServer::POAManager::AdapterInactive
例外が発生します。
説明
このオペレーションは、POAManager の状態を活性化に変更します。状態を活性化に移行すると、関連付けられた POA は要求を処理できるようになります。
注記 POA による要求の処理では、すべての親 POA にも活性化状態の POAManager がなければなりません。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
戻り値
特にありません。
PortableServer::POAManager::deactivate
概要
POAManager の状態を非活性化に変更します。
C++ バインディング
void deactivate (
CORBA::Boolean etherealize_objects,
CORBA::Boolean wait_for_completion);
引数
etherealize_objects
BEA WebLogic Enterprise バージョン 4.2 以降のソフトウェア、および BEA Tuxedo バージョン 8.0 以降のソフトウェアでは、この引数は常に FALSE
に設定する必要があります。
wait_for_completion
この引数を TRUE
に指定すると、deactivate
オペレーションは、プロセス内の要求がすべて完了した後にのみ戻り値を返します。この引数を FALSE
に指定すると、deactivate
オペレーションは、関連付けられた POA の状態の変更後に戻り値を返します。
例外
POA マネージャの状態が非活性化のときに使用すると、PortableServer::POAManager::AdapterInactive
例外が発生します。
説明
このオペレーションは、POAManager の状態を非活性化に変更します。状態を非活性化に移行すると、関連付けられた POA は、未実行の要求およびすべての新しい要求を拒否します。
注記 このリリースの BEA Tuxedo では、マルチスレッドをサポートしていません。そのため、オブジェクト呼び出しのコンテキストで呼び出しを行う場合、wait_for_completion
は TRUE
に指定しないでください。したがって、POAManager が現在実行中の場合、POAManager は非活性化に設定できません。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
戻り値
特にありません。
POA 方針メンバ・オブジェクト
CORBA::Policy
から生成されたインターフェイスは、POA に適用する方針を指定するために POA::create_POA
オペレーションで使用されます。方針オブジェクトは、ルート POA と同様に既存の POA のファクトリ・オペレーションを作成します。方針オブジェクトは、POA の作成時に指定します。既存の POA では方針は変更できません。方針は、親 POA から継承されません。
PortableServer::LifespanPolicy
概要
create_POA
オペレーションにオブジェクトの寿命を指定します。
説明
POA::create_lifespan_policy
オペレーションで LifespanPolicy
インターフェイスを持つオブジェクトを取得します。このオブジェクトは、POA::create_POA
オペレーションに渡され、作成された POA でインプリメントされるオブジェクトの寿命を指定します。指定可能な値は次のとおりです。
TRANSIENT
− POA でインプリメントされたオブジェクトは、最初に作成されたときのプロセスの存続期間を延ばすことができません。 PERSISTENT
− POA でインプリメントされたオブジェクトは、最初に作成されたときのプロセスの存続期間を延ばすことができます。 永続オブジェクトには、それに関連付けられた POA (永続オブジェクトを作成した POA) があります。ORB が永続オブジェクトで要求を受け取ると、POA の名前とそのすべての上位オブジェクトを基準にして、一致する POA を検索します。
POA の名前は、その包含スコープ (親 POA) 内で一意でなければなりません。移植可能なプログラムでは、自身の POA の名前とほかのプロセスで使用される POA の名前が衝突しないことを前提にしています。
LifespanPolicy
オブジェクトが create_POA
に渡されない場合、寿命方針のデフォルトは TRANSIENT
に設定されます。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
例外
特にありません。
PortableServer::IdAssignmentPolicy
概要
作成された POA の ObjectIds
の生成元をアプリケーションにするか、ORB にするかを指定します。
説明
POA::create_id_assignment_policy
オペレーションで IdAssignmentPolicy
インターフェイスを持つオブジェクトを取得します。このオブジェクトは、POA::create_POA
オペレーションに渡され、作成された POA の ObjectId
の生成元をアプリケーションにするか、ORB にするかを指定します。指定可能な値は次のとおりです。
USER_ID
− アプリケーションのみが、その POA で作成されるオブジェクトに ObjectId
を割り当てます。 SYSTEM_ID
− POA のみが、その POA で作成されるオブジェクトに ObjectId
を割り当てます。POA に PERSISTENT
方針もある場合は、割り当てられた ObjectId
は、同じ POA のすべてのインスタンスを通じて一意でなければなりません。IdAssignmentPolicy
が POA 作成時に指定されない場合、SYSTEM_ID
がデフォルトに指定されます。
注記 この関数がサポートされるのは、共同クライアント/サーバのみです。
Request メンバ関数
Request メンバ関数の C++ へのマッピングは次のとおりです。
// C++
class Request
{
public:
Object_ptr target() const;
const char *operation() const;
NamedValue_ptr result();
NVList_ptr arguments();
Environment_ptr env();
ExceptionList_ptr exceptions();
ContextList_ptr contexts();
void ctx(Context_ptr);
Context_ptr ctx() const
// 引数操作ヘルパ関数
Any &add_in_arg();
Any &add_in_arg(const char* name);
Any &add_inout_arg():
Any &add_inout_arg(const char* name);
Any &add_out_arg():
Any &add_out_arg(const char* name);
void set_return_type(TypeCode_ptr tc);
Any &return_value();
void invoke();
void send_oneway();
void send_deferred();
void get_response();
Boolean poll_response();
};
注記 add_*_arg
、set_return_type
、および set_return_type
メンバ関数は、属性ベースのアクセサの使用を簡略化するものとして追加されます。
以下の節では、Request の各メンバ関数について説明します。
CORBA::Request::arguments
概要
要求の引数リストを取得します。
C++ バインディング
CORBA::NVList_ptr CORBA::Request::arguments () const;
引数
特にありません。
説明
このメンバ関数は、要求の引数リストを取得します。arguments には、input
または output
、あるいはその両方を指定できます。
戻り値
関数が成功した場合、戻り値は要求のオペレーションの引数リストへのポインタです。返された引数リストは Request オブジェクト・リファレンスが所有するため、解放しないでください。
関数が失敗した場合、例外がスローされます。
CORBA::Request::ctx(Context_ptr)
概要
オペレーションの Context オブジェクトを設定します。
C++ バインディング
void CORBA::Request::ctx (
CORBA::Context_ptr CtxObject);
引数
CtxObject
Context オブジェクトの設定に使用する新しい値。
説明
このメンバ関数は、オペレーションの Context オブジェクトを設定します。
戻り値
特にありません。
関連項目
CORBA::Request::ctx()
CORBA::Request::get_response
概要
特定の遅延同期要求の応答を取得します。
C++ バインディング
void CORBA::Request::get_response ();
引数
特にありません。
説明
このメンバ関数は、特定の要求の応答を取得します。CORBA::Request::send_deferred
関数または CORBA::Request::send_multiple_requests
関数の呼び出し後に使用されます。要求が完了していない場合、CORBA::Request::get_response
関数によって要求が完了するまでブロックされます。
戻り値
特にありません。
関連項目
CORBA::Request::send_deferred
CORBA::Request::invoke
概要
要求で指定されたオペレーションで呼び出しを実行します。
C++ バインディング
void CORBA::Request::invoke ();
引数
特にありません。
説明
このメンバ関数は、オブジェクト・リクエスト・ブローカ (ORB) を呼び出して、適切なサーバ・アプリケーションに要求を送信します。
戻り値
特にありません。
CORBA::Request::operation
概要
要求用のオペレーションを取得します。
C++ バインディング
const char * CORBA::Request::operation () const;
引数
特にありません。
説明
このメンバ関数は、要求用のオペレーションを取得します。
戻り値
関数が成功した場合、戻り値はオブジェクト用のオペレーションへのポインタです。値には 0 (ゼロ) を指定できます。返されたメモリは Request オブジェクトが所有するため、解放しないでください。
関数が失敗した場合、例外がスローされます。
CORBA::Request::poll_response
概要
遅延同期要求が完了したかどうかを判別します。
C++ バインディング
CORBA::Boolean CORBA::Request::poll_response ();
引数
特にありません。
説明
このメンバ関数は、要求が完了したかどうか、完了後すぐに戻り値が返されたかどうかを判別します。このメンバ関数を使用すると、要求の状態をチェックできます。また、CORBA::Request::get_response
の呼び出しがブロックするかどうかの判別にも使用できます。
戻り値
関数が成功した場合、戻り値は、応答が完了済みのときは CORBA_TRUE
、応答が未完了のときは CORBA_FALSE
になります。
関数が失敗した場合、例外がスローされます。
関連項目
CORBA::ORB::get_next_response
CORBA::ORB::poll_next_response
CORBA::ORB::send_multiple_requests
CORBA::Request::get_response
CORBA::Request::send_deferred
CORBA::Request::result
概要
要求の結果を取得します。
C++ バインディング
CORBA::NamedValue_ptr CORBA::Request::result ();
引数
特にありません。
説明
このメンバ関数は、要求の結果を取得します。
戻り値
関数が成功した場合、戻り値はオペレーションの結果へのポインタです。返された結果は Request オブジェクトが所有するため、解放しないでください。
関数が失敗した場合、例外がスローされます。
CORBA::Request::env
概要
要求の環境を取得します。
C++ バインディング
CORBA::Environment_ptr CORBA::Request::env ();
引数
特にありません。
説明
このメンバ関数は、要求の環境を取得します。
戻り値
関数が成功した場合、戻り値はオペレーションの環境へのポインタです。返された環境は Request オブジェクトが所有するため、解放しないでください。
関数が失敗した場合、例外がスローされます。
CORBA::Request::ctx
概要
要求のコンテキストを取得します。
C++ バインディング
CORBA::context_ptr CORBA::Request::ctx ();
引数
特にありません。
説明
このメンバ関数は、要求のコンテキストを取得します。
戻り値
関数が成功した場合、戻り値はオペレーションのコンテキストへのポインタです。返されたコンテキストは Request オブジェクトが所有するため、解放しないでください。
関数が失敗した場合、例外がスローされます。
CORBA::Request::contexts
概要
要求のコンテキスト・リストを取得します。
C++ バインディング
CORBA::ContextList_ptr CORBA::Request::contexts ();
引数
特にありません。
説明
このメンバ関数は、要求のコンテキスト・リストを取得します。
戻り値
関数が成功した場合、戻り値はオペレーションのコンテキスト・リストへのポインタです。返されたコンテキスト・リストは Request オブジェクトが所有するため、解放しないでください。
関数が失敗した場合、例外がスローされます。
CORBA::Request::exceptions
概要
要求の例外リストを取得します。
C++ バインディング
CORBA::ExceptionList_ptr CORBA::Request::exceptions ();
引数
特にありません。
説明
このメンバ関数は、要求の例外リストを取得します。
戻り値
関数が成功した場合、戻り値は要求の例外リストへのポインタです。返された例外リストは Request オブジェクトが所有するため、解放しないでください。
関数が失敗した場合、例外がスローされます。
CORBA::Request::target
概要
要求の対象のオブジェクト・リファレンスを取得します。
C++ バインディング
CORBA::Object_ptr CORBA::Request::target () const;
引数
特にありません。
説明
このメンバ関数は、要求の対象のオブジェクト・リファレンスを取得します。
戻り値
関数が成功した場合、戻り値はオペレーションの対象のオブジェクトへのポインタです。戻り値は Request オブジェクトが所有するため、解放しないでください。
関数が失敗した場合、例外がスローされます。
CORBA::Request::send_deferred
概要
遅延同期要求を開始します。
C++ バインディング
void CORBA::Request::send_deferred ();
引数
特にありません。
説明
このメンバ関数は、遅延同期要求を開始します。この関数は、応答が要求されたときに CORBA::Request::get_response
関数と共に使用します。
戻り値
特にありません。
関連項目
CORBA::ORB::get_next_response
CORBA::ORB::poll_next_response
CORBA::ORB::send_multiple_requests
CORBA::Request::get_response
CORBA::Request::poll_response
CORBA::Request::send_oneway
CORBA::Request::send_oneway
概要
一方向の要求を開始します。
C++ バインディング
void CORBA::Request::send_oneway ();
引数
特にありません。
説明
このメンバ関数は一方向の要求を開始します。この関数では、応答は要求されません。
戻り値
特にありません。
関連項目
CORBA::ORB::send_multiple_requests
CORBA::Request::send_deferred
文字列
文字列の各関数の C++ へのマッピングは次のとおりです。
// C++
namespace CORBA {
static char * string_alloc(ULong len);
static char * string_dup (const char *);
static void string_free(char *);
...
}
注記 C++ では、char
の静的配列は char*
に移行が進んでいます。したがって、String_var
に静的配列を割り当てる際は注意が必要になります。これは、String_var
では、string_alloc
で割り当てられたデータをポインタが指すことを前提としており、最終的には string_free
でデータを解放しようとするためです。
このような動作に対応するために、ANSI/ISO C++ では、文字列リテラルが char*
から const char*
に変更されています。ただし、ほどんどの C++ コンパイラではこの変更をインプリメントしていないため、移植可能なプログラムを作成する際は、上記の注意事項に留意しなければなりません。
以下の節では、文字列に割り当てられるメモリを管理する各関数について説明します。
CORBA::string_alloc
概要
文字列用のメモリを割り当てます。
C++ バインディング
char * CORBA::string_alloc(ULong len);
引数
len
メモリに割り当てる文字列の長さ。
説明
このメンバ関数は、文字列用のメモリを動的に割り当てます。割り当てが実行できなかった場合は、ニル・ポインタを返します。また、len+1
文字を割り当てるので、結果として得られた文字列には後続の NULL 文字を保持するのに十分なスペースを確保できます。このメンバ関数で割り当てられたメモリを解放するには、CORBA::string_free
メンバ関数を呼び出します。
この関数では、CORBA 例外はスローされません。
戻り値
関数が成功した場合、戻り値は文字列オブジェクト用に新しく割り当てられたメモリへのポインタです。関数が失敗した場合、戻り値はニル・ポインタです。
例
char* s = CORBA::string_alloc(10);
関連項目
CORBA::string_free
CORBA::string_dup
CORBA::string_dup
概要
文字列のコピーを作成します。
C++ バインディング
char * CORBA::string_dup (const char * Str);
引数
Str
コピーする文字列のアドレス。
説明
このメンバ関数は、NULL 文字も含め文字列引数のコピーを保持するのに十分なメモリを割り当ててから、そのメモリに文字列引数をコピーし、新しい文字列へのポインタを返します。
この関数では、CORBA 例外はスローされません。
戻り値
関数が成功した場合、戻り値は新しい文字列へのポインタです。関数が失敗した場合、戻り値はニル・ポインタです。
例
char* s = CORBA::string_dup("hello world");
関連項目
CORBA::string_free
CORBA::string_alloc
CORBA::string_free
概要
文字列に割り当てられたメモリを解放します。
C++ バインディング
void CORBA::string_free(char * Str);
引数
Str
割り当てを解除するメモリのアドレス。
説明
このメンバ関数は、CORBA::string_alloc()
または CORBA::string_dup()
メンバ関数で文字列に割り当てられたメモリの割り当てを解除します。この関数にニル・ポインタを渡すと、すべてのアクションが実行されなくなります。
この関数では、CORBA 例外はスローされない場合があります。
戻り値
特にありません。
例
char* s = CORBA::string_dup("hello world");
CORBA::string_free(s);
関連項目
CORBA::string_alloc
CORBA::string_dup
ワイド文字列
C++ では、バウンディッド・ワイド文字列型とアンバウンディッド・ワイド文字列型は共に CORBA::WChar*
にマッピングします。また、CORBA モジュールでは、WString_var
および WString_out
クラスを定義します。これらの各クラスは、同じメンバ関数に、対応する文字列として同じセマンティクスを提供します。ただし、これらのクラスがワイド文字列およびワイド文字を扱う場合は例外です。
ワイド文字列の動的な割り当てまたは割り当て解除は、次の関数で実行します。
// C++
namespace CORBA {
// ...
WChar *wstring_alloc(ULong len);
WChar *wstring_dup(const WChar* ws);
void wstring_free(WChar*);
};
上記のメンバ関数は、ワイド文字列を処理する点を除いて、文字列型の同じ関数として同じセマンティクスを持っています。
一般的なマッピング・インプリメンテーションでは、直接 C++ 入出力ストリームで WString_var
および WString_out
を使用するために、オーバーロードの operator<<
(挿入) と operator>>
(抽出) が提供されます。
これらのメンバ関数については、「文字列」の対応する関数を参照してください。
リスト 14-1 では、ワイド文字列およびワイド文字を使用したコード例を示します。
リスト 14-1 ワイド文字列の例
// ユーザから文字列を取得
cout << "String?";
char mixed[256]; // これは十分な大きさ
char lower[256];
char upper[256];
wchar_t wmixed[256];
cin >> mixed;
// 文字列をワイド文字列に変換
// これはサーバの要求によるもの
mbstowcs(wmixed, mixed, 256);
// 文字列を大文字に変換
CORBA::WString_var v_upper = CORBA::wstring_dup(wmixed);
v_simple->to_upper(v_upper.inout());
wcstombs(upper, v_upper.in(), 256);
cout << upper << endl;
// 文字列を小文字に変換
CORBA::WString_var v_lower = v_simple->to_lower(wmixed);
wcstombs(lower, v_lower.in(), 256);
cout << lower << endl;
// すべて正常に完了
return 0;
TypeCode メンバ関数
TypeCode は、OMG IDL の型情報を表します。
TypeCode のコンストラクタは定義しません。ただし、マッピング・インターフェイス、および各基本型と各定義済み OMG IDL 型には、インプリメンテーションで TypeCode 擬似オブジェクト・リファレンス (TypeCode_ptr
) へのアクセスが提供されます。この擬似オブジェクト・リファレンスには、_tc_<type>
という形式が付きます。この形式は、Any
での型を設定したり、equal
の引数として使用したりできます。これらの TypeCode リファレンス定数の名前では、<type>
は定義したスコープの範囲内にある型のローカル名を参照します。各 C++ _tc_<type>
定数は、一致した型と同じスコープ・レベルで定義します。
ほかのサーバレス・オブジェクトと同様に、TypeCode への C++ マッピングには _nil()
オペレーションがあります。このオペレーションは、TypeCode へのニル・オブジェクト・リファレンスを返します。また、作成された型に埋め込まれた TypeCode リファレンスの初期化にも使用できます。ただし、ニル TypeCode リファレンスは、引数としてオペレーションに渡すことができません。これは、TypeCodes
がオブジェクト・リファレンスではなく値として渡されるためです。
TypeCode メンバ関数の C++ へのマッピングは次のとおりです。
class CORBA
{
class TypeCode
{
public:
class Bounds { ... };
class BadKind { ... };
Boolean equal(TypeCode_ptr) const;
TCKind kind() const;
Long param_count() const;
Any *parameter(Long) const;
RepositoryId id () const;
}; // TypeCode
}; // CORBA
メモリ管理
TypeCode には、次の特別なメモリ管理規則があります。
id
関数の戻り値の所有権は TypeCode が保持します。したがって、呼び出し側はこれらの戻り値を解放しないでください。以下の節では、TypeCode の各メンバ関数について説明します。
CORBA::TypeCode::equal
概要
2 つの TypeCode オブジェクトが同じかどうかを判別します。
C++ バインディング
CORBA::Boolean CORBA::TypeCode::equal (
CORBA::TypeCode_ptr TypeCodeObj) const;
引数
TypeCodeObj
比較対象の TypeCode オブジェクトへのポインタ。
説明
このメンバ関数は、TypeCode オブジェクトが入力パラメータの TypeCodeObj
と同じかどうかを判別します。
戻り値
TypeCode オブジェクトが TypeCodeObj
パラメータと同じ場合、CORBA_TRUE
が返されます。
TypeCode オブジェクトが TypeCodeObj
パラメータと同じでない場合、CORBA_FALSE
が返されます。
関数が失敗した場合、例外がスローされます。
CORBA::TypeCode::id
概要
TypeCode の ID を返します。
C++ バインディング
CORBA::RepositoryId CORBA::TypeCode::id () const;
引数
特にありません。
説明
このメンバ関数は、TypeCode の ID を返します。
戻り値
TypeCode の リポジトリ ID。
CORBA::TypeCode::kind
概要
TypeCode オブジェクト・リファレンスに格納されているデータの種類を取得します。
C++ バインディング
CORBA::TCKind CORBA::TypeCode::kind () const;
引数
特にありません。
説明
このメンバ関数は、CORBA::TypeCode
クラスの kind
属性を取得します。この属性は、TypeCode オブジェクト・リファレンスに格納されているデータの種類を指定します。
戻り値
メンバ関数が成功した場合、TypeCode オブジェクト・リファレンスに格納されているデータの種類を返します。TypeCode の種類とそのパラメータの一覧については、表 14-2 を参照してください。
メンバ関数が失敗した場合、例外がスローされます。
CORBA::TypeCode::param_count
概要
TypeCode オブジェクト・リファレンスのパラメータ数を取得します。
C++ バインディング
CORBA::Long CORBA::TypeCode::param_count () const;
引数
特にありません。
説明
このメンバ関数は、CORBA::TypeCode
クラスのパラメータ属性を取得します。この属性は、TypeCode オブジェクト・リファレンスのパラメータ数を指定します。各種のパラメータの一覧については、表 14-2 を参照してください。
戻り値
関数が成功した場合、TypeCode オブジェクト・リファレンスに格納されているパラメータ数を返します。
関数が失敗した場合、例外がスローされます。
CORBA::TypeCode::parameter
概要
インデックス入力引数で指定されたパラメータを取得します。
C++ バインディング
CORBA::Any * CORBA::TypeCode::parameter (
CORBA::Long Index) const;
引数
Index
パラメータ・リストのインデックス。取得するパラメータを指定するのに使用します。
説明
このメンバ関数は、インデックス入力引数で指定されたパラメータを取得します。各種のパラメータの一覧については、表 14-2 を参照してください。
戻り値
メンバ関数が成功した場合、戻り値はインデックス入力引数で指定されたパラメータへのポインタです。
メンバ関数が失敗した場合、例外がスローされます。
Exception メンバ関数
BEA Tuxedo ソフトウェアでは、例外のスローとキャッチをサポートしています。
警告 例外コンストラクタを誤って使用すると、データ・メンバが初期化されなくなります。reason
フィールド付きで定義する例外は、データ・メンバを初期化するコンストラクタを使用して作成する必要があります。デフォルトのコンストラクタを使用した場合は、そのデータ・メンバは初期化されず、例外の破棄時にシステムによって存在しないデータの破棄が試行されます。
例外を作成する際は、できる限り完全にデータ・フィールドを初期化するコンストラクタを使用するようにしてください。例外を最も簡単に識別するには、OMG IDL 定義を確認します。この定義には、データ・メンバに関する追加の定義が記述されています。
以下では、例外の各メンバ関数について説明します。
CORBA::SystemException::SystemException ()
CORBA::SystemException
クラスのデフォルトのコンストラクタです。マイナ・コードは 0 (ゼロ) に初期化され、完了ステータスは COMPLETED_NO
に設定されています。
CORBA::SystemException::SystemException (
const CORBA::SystemException & Se)
CORBA::SystemException
クラスのコピー・コンストラクタです。
CORBA::SystemException::SystemException(
CORBA::ULong Minor, CORBA::CompletionStatus Status)
CORBA::SystemException
クラスのコンストラクタで、マイナー・コードと完了ステータスを設定します。
各引数について次に説明します。
Minor
Exception オブジェクトのマイナー・コード。minor フィールドはインプリメンテーション固有の値で、ORB が例外を識別するために使用します。BEA Tuxedo の minor フィールドの定義は、orbminor.h
ファイルにあります。
Status
Exception オブジェクトの完了ステータス。値は次のとおりです。
CORBA::COMPLETED_YES
CORBA::COMPLETED_NO
CORBA::COMPLETED_MAYBE
CORBA::SystemException::
~SystemException ()
CORBA::SystemException
クラスのデストラクタです。Exception オブジェクトが使用していたメモリを解放します。
CORBA::SystemException CORBA::SystemException::operator =
const CORBA::SystemException Se)
この代入演算子は、ソース例外から例外情報をコピーします。Se
引数には、コピー元の SystemException オブジェクトを指定します。
CORBA::CompletionStatus CORBA::SystemException::completed()
この例外の完了ステータスを返します。
CORBA::SystemException::completed(
CORBA::CompletionStatus Completed)
この例外の完了ステータスを設定します。Completed
引数には、この例外の完了ステータスを指定します。
CORBA::ULong CORBA::SystemException::minor()
この例外のマイナー・コードを返します。
CORBA::SystemException::minor (CORBA::ULong Minor)
この例外のマイナー・コードを設定します。minor
引数には、この例外の新しいマイナー・コードを指定します。minor フィールドはインプリメンテーション固有の値で、アプリケーションが例外を識別するために使用します。
CORBA::SystemException * CORBA::SystemException::_narrow (
CORBA::Exception_ptr Exc)
指定の例外がシステム例外に限定可能かどうかを判別します。Exc
引数には、限定する例外を指定します。
指定の例外がシステム例外の場合、システム例外へのポインタが返されます。指定の例外がシステム例外ではない場合、0 (ゼロ) が返されます。
CORBA::UserException * CORBA::UserException::_narrow(
CORBA::Exception_ptr Exc)
指定の例外がユーザ例外に限定可能かどうかを判別します。Exc
引数には、限定する例外を指定します。
指定の例外がユーザ例外の場合、ユーザ例外へのポインタが返されます。指定の例外がユーザ例外ではない場合、0 (ゼロ) が返されます。
標準例外
ここでは、ORB に対して定義される標準例外について説明します。標準例外の例外識別子は、インターフェイス仕様に関係なくオペレーション呼び出しの結果として返されます。標準例外は、raises
式には示されません。
標準例外の処理の複雑さを抑制するには、標準例外のセットを制御可能なサイズに抑えます。この制約により、類似する例外を数多く列挙するのではなく、同等のクラス定義の例外だけに限定することができます。
たとえば、動的なメモリ割り当てができないために、さまざまなポイントでオペレーション呼び出しが失敗することがあります。その際、動的なメモリ割り当ての失敗に対応する 1 つの例外が定義されます。つまり、マーシャルまたはマーシャル解除、クライアント、オブジェクト・インプリメンテーション、ネットワーク・パケットの割り当てなど、メモリ割り当ての失敗で例外が発生するさまざまな要因に対応する、複数の異なる例外を列挙するといったことは行いません。各標準例外には、例外のサブカテゴリを指定するマイナー・コードが含まれています。マイナー・コードの値の割り当ては、各 ORB インプリメンテーションで行います。
また、標準例外には completion_status
コードも含まれています。このコードは、次のいずれかの値を取ります。
CORBA::COMPLETED_YES
例外が発生する前にオブジェクト・インプリメンテーションの処理が完了しています。
CORBA::COMPLETED_NO
例外が発生する前にオブジェクト・インプリメンテーションが開始されていませんでした。
CORBA::COMPLETED_MAYBE
インプリメンテーションの完了ステータスが不明です。
例外の定義
次の表に、標準例外の説明を示します。クライアントは、この一覧にはないシステム例外の処理を準備しておく必要があります。これは、将来のバージョンの仕様で標準例外の定義が追加される可能性があるため、および ORB インプリメンテーションで非標準のシステム例外が発生する可能性があるためです。例外の詳細については、「システム・メッセージ」を参照してください。
表 14-3 では、例外の定義を示します。
オブジェクトが存在しない場合
削除済みのオブジェクトを呼び出すと、常に CORBA::OBJECT_NOT_EXIST
例外が発生します。この場合、「困難な」障害として報告されます。この例外を受け取った場合は、このオブジェクト・リファレンスのすべてのコピーの削除、およびほかの適切な「最終回復」手順の実行が許可 (推奨) されます。
トランザクションの例外
CORBA::TRANSACTION_REQUIRED
例外は、要求では NULL トランザクション・コンテキストを登録したにもかかわらず、アクティブなトランザクションが要求されたことを示します。
CORBA::TRANSACTION_ROLLEDBACK
例外は、要求に関連付けられたトランザクションがロールバック済みか、またはロールバックとしてマークされていたことを示します。したがって、要求されたオペレーションは実行できなかったか、または実行されていません。これは、トランザクションでこれ以降の計算が無意味になるためです。
CORBA::INVALID_TRANSACTION
は、要求が無効なトランザクション・コンテキストを登録したことを示します。たとえば、リソースを登録しようとしたときにエラーが発生した場合に、この例外が発生します。
ExceptionList メンバ関数
ExceptionList
メンバ関数を使用すると、Request が呼び出されたときに発生するユーザ定義例外すべての TypeCode のリストを、クライアント・アプリケーションまたはサーバ・アプリケーションで提供できるようになります。Request メンバ関数については、「Request メンバ関数」を参照してください。
ExceptionList メンバ関数の C++ へのマッピングは次のとおりです。
class CORBA
{
class ExceptionList
{
public:
Ulong count ();
void add(TypeCode_ptr tc);
void add_consume(TypeCode_ptr tc);
TypeCode_ptr item(Ulong index);
Status remove(Ulong index);
}; // ExceptionList
}// CORBA
CORBA::ExceptionList::count
概要
リスト内の現在の項目数を取得します。
C++ バインディング
Ulong count ();
引数
特にありません。
例外
関数が失敗した場合、例外がスローされます。
説明
このメンバ関数は、リスト内の現在の項目数を取得します。
戻り値
関数が成功した場合、戻り値はリスト内の項目数です。リストを作成したばかりで、ExceptionList オブジェクトを追加していない場合は、0 (ゼロ) が返されます。
CORBA::ExceptionList::add
概要
名前の付いていない項目で ExceptionList オブジェクトを作成します。これは、flags
属性のみを設定したオブジェクトです。
C++ バインディング
void add(TypeCode_ptr tc);
引数
tc
TypeCode_ptr
によって参照されるメモリ位置を定義します。
例外
メンバ関数が失敗した場合、CORBA::NO_MEMORY
例外がスローされます。
説明
このメンバ関数は、名前の付いていない項目で ExceptionList オブジェクトを作成します。これは、flags 属性のみを設定したオブジェクトです。
ExceptionList オブジェクトは動的に拡張するので、そのサイズをアプリケーションでトラッキングする必要はありません。
戻り値
関数が成功した場合、戻り値は新しく作成された ExceptionList オブジェクトへのポインタです。
関連項目
CORBA::ExceptionList::add_consume
CORBA::ExceptionList::count
CORBA::ExceptionList::item
CORBA::ExceptionList::remove
CORBA::ExceptionList::add_consume
概要
ExceptionList オブジェクトを作成します。
C++ バインディング
void add_consume(TypeCode_ptr tc);
引数
tc
想定されるメモリ位置。
例外
メンバ関数が失敗した場合、例外が発生します。
説明
このメンバ関数は、ExceptionList オブジェクトを作成します。
ExceptionList オブジェクトは動的に拡張するので、そのサイズをアプリケーションでトラッキングする必要はありません。
戻り値
関数が成功した場合、戻り値は新しく作成された ExceptionList オブジェクトへのポインタです。
関連項目
CORBA::ExceptionList::add
CORBA::ExceptionList::count
CORBA::ExceptionList::item
CORBA::ExceptionList::remove
CORBA::ExceptionList::item
概要
渡されたインデックスに基づいて ExceptionList オブジェクトへのポインタを取得します。
C++ バインディング
TypeCode_ptr item(ULong index);
引数
index
ExceptionList オブジェクトへのインデックス。インデックスの基数はゼロです。
例外
関数が失敗した場合、BAD_PARAM
例外がスローされます。
説明
このメンバ関数は、渡されたインデックスに基づいて ExceptionList オブジェクトへのポインタを取得します。関数では、ゼロを基数にしたインデックスを使用します。
戻り値
関数が成功した場合、戻り値は ExceptionList オブジェクトへのポインタです。
関連項目
CORBA::ExceptionList::add
CORBA::ExceptionList::add_consume
CORBA::ExceptionList::count
CORBA::ExceptionList::remove
CORBA::ExceptionList::remove
概要
指定されたインデックスの項目を削除し、関連付けられたメモリをすべて解放してから、リストの残りの項目を順序付けし直します。
C++ バインディング
Status remove(ULong index);
引数
Index
ContextList オブジェクトへのインデックス。インデックスの基数はゼロです。
例外
関数が失敗した場合、BAD_PARAM
例外がスローされます。
説明
このメンバ関数は、指定されたインデックスの項目を削除し、関連付けられたメモリをすべて解放してから、リストの残りの項目を順序付けし直します。
戻り値
特にありません。
関連項目
CORBA::ExceptionList::add
CORBA::ExceptionList::add_consume
CORBA::ExceptionList::count
CORBA::ExceptionList::item
![]() |
![]() |
![]() |
|
Copyright © 2001, BEA Systems, Inc. All rights reserved.
|