BEA Logo BEA Tuxedo Release 8.0

  BEA ホーム  |  イベント  |  ソリューション  |  パートナ  |  製品  |  サービス  |  ダウンロード  |  ディベロッパ・センタ  |  WebSUPPORT

 

   Tuxedo ホーム   |   CORBA プログラミング・リファレンス   |   前へ   |   次へ   |   目次

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 フラグによって決まります。releaseCORBA_TRUE と評価された場合、コンストラクタはパラメータの値をディープ・コピーします。releaseCORBA_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 が想定するかどうかを指定します。ReleaseCORBA_TRUE の場合、Any は所有権を想定します。ReleaseCORBA_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 によって、AnyValue でメモリの所有権を想定するかどうかが決まります。ReleaseCORBA_TRUE の場合、Any は所有権を想定して InitAny 引数の値をディープ・コピーします。ReleaseCORBA_FALSE の場合、AnyInitAny 引数の値をシャロー・コピーします。

説明

これは、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 に挿入する値を含んだ関連オブジェクト。

説明

これらの挿入メンバ関数は、AnyCORBA::BooleanCORBA::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::BooleanCORBA::CharCORBA::OctetCORBA::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 引数を管理するかどうかを指定します。ReleaseCORBA_TRUE の場合、Any は所有権を想定します。ReleaseCORBA_FALSE の場合、Any は所有権を想定しません。この場合、Value パラメータが指すデータは、割り当て時または破棄時に解放されません。

説明

これらのメンバ関数は、渡された TC および Value 引数の値に、現在 Any に格納されているデータおよび TypeCode 値を置き換えます。この関数による置き換えは型セーフではありません。つまり、TypeCode 値と Value 引数が指す記憶域のデータ型との一貫性は、呼び出し側が維持することになります。

ReleaseCORBA_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 メンバ関数について説明します。

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);

引数

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_INCORBA::ARG_OUT、および CORBA::ARG_INOUT です。

NamedValue の値は、any の標準オペレーションで操作できます。

NamedValue メンバ関数の C++ へのマッピングは次のとおりです。

// C++
class NamedValue
{
public:
Flags flags() const;
const char * name() const;
Any * value() const;
};

メモリ管理

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 の一部として作成できます。

上記の各オペレーションによって、新しい項目が返されます。

要素は、ゼロを基数にしたインデックスを介してアクセスおよび削除できます。addadd_itemadd_valueadd_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 には、次の特別なメモリ管理規則があります。

以下の節では、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
{
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,
ExceptionList_ptr Except_list,
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_workwork_pending の 2 つのオペレーションを ORB インターフェイスに含めます。これらのオペレーションは、シングル・スレッド・アプリケーションでもマルチスレッド・アプリケーションでも使用できます。アプリケーションが純粋な ORB クライアントの場合は、これらのオペレーションは不要です。

マルチスレッド・サーバ・アプリケーションをサポートするには、get_ctxset_ctxclear_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);

引数

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 オペレーションに渡されたパラメータ値に問題があることを示すために発生します。個別の例外と理由を次に示します。

例外

理由

BAD_POLICY

要求された方針は ORB で認識されません。

UNSUPPORTED_POLICY

要求された方針は ORB で有効と認識されますが、現在サポートされていません。

BAD_POLICY_TYPE

方針に要求された値の型は、その PolicyType で無効です。

BAD_POLICY_VALUE

方針に要求された値は有効な型ですが、その型の有効な範囲に入っていません。

UNSUPPORTED_POLICY_VALUE

方針に要求された値は有効な型で、その型の有効な範囲に入っていますが、現在サポートされていません。


 

説明

このオペレーションは、指定された初期状態で特定の型の方針オブジェクトの新しいインスタンスを作成するために呼び出します。方針の要求された型と内容を解釈できなかったために、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 のオブジェクトを返し、NameServiceCosNamingContext オブジェクトを返します。

戻り値

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 は、RootPOAPOACurrentInterfaceRepositoryNameServiceTradingServiceSecurityCurrentTransactionCurrent、および 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_responseCORBA::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 標準例外が発生します。

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 {
static CORBA::ORB_ptr ORB_init(int& argc, char** argv,
const char* orb_identifier = 0,
const char* -ORBport nnn);
<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]

};

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 引数で指定できます。

通常、引数 argcargv は、メイン・プログラムに渡されたパラメータと同じです。C++ での指定のように、これらのパラメータには、クライアントを起動したコマンド行の文字列トークンが格納されます。2 つの ORB オプションは、以下の例で示すように、トークンのペアをそれぞれ使用してコマンド行で指定できます。

クライアントのタイプ

ORB_init 関数は、次の手順で ORB のクライアントのタイプを判別します。

  1. orb_identifier 引数が指定されている場合、ORB_init は、文字列が "BEA_IIOP""BEA_TOBJ" かによって、クライアントのタイプがネイティ ブかリモートかを判別します。orb_identifier 文字列がある場合、argv の -ORBid パラメータはすべて無視または削除されます。

  2. orb_identifier が指定されていないか、または明示的にゼロに指定されて いる場合、ORB_initargc/argv のエントリを確認します。argv"-ORBid" のエントリがある場合、次のエントリは、リモートまたはネイ ティブを表す "BEA_IIOP""BEA_TOBJ" かのどちらかになります。このエ ントリのペアが出現するのは、コマンド行に "-ORBid BEA_IIOP" または "-ORBid BEA_TOBJ" のどちらかがある場合です。

  3. クライアントのタイプが 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 では、この例外の一覧を示します。

表14-1 CORBA::BAD_PARAM 標準例外のマイナー・コード

マイナー・コード

説明

BadSchemeName

指定のスキーマは ORB インプリメンテーションによって認識されました。ただし、サポートされているスキーマは、IOR、corbaloc、corbalocs、および corbaname のみです。

BadAddress

アドレスの形式が ORB インプリメンテーションで認識されません。ホスト名は、DNS に従って指定するか、またはドットで区切る形式のクラス C の IP アドレスとして指定する必要があります。

BadSchemeSpecificPart

アドレスの形式が ORB インプリメンテーションで認識されません。ホスト名は、DNS に従って指定するか、またはドットで区切る形式のクラス C の IP アドレスとして指定する必要があります。

BadSchemeSpecificPart

指定されたスキーマでは、URL の一部の形式が正しくありません。


 

[-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 が生成するかを指定します。指定可能な値は次のとおりです。

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 でインプリメントされるオブジェクトの寿命を指定します。指定可能な値は次のとおりです。

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 に関連付ける方針オブジェクト。

例外

AdapterAlreadyExists

対象の POA に指定の名前を持つ子 POA が既にある場合に発生します。

InvalidPolicy

指定の方針オブジェクトが 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::deactivate オペレーションで同じプロセスによる関連付けられた POA の再作成を無効にしている場合は除きます。

POA が破棄された場合、実行を開始した要求については、完了するまで処理が続行されます。実行を開始していない要求については、それが新しく受け取られ、POA がないような状態で処理されます。そのため、要求は拒否され、OBJECT_NON_EXIST 例外が発生します。

wait_for_completion パラメータが TRUE の場合、プロセス内の要求がすべて完了し、etherealize の呼び出しがすべて完了した後にのみ、destroy オペレーションは戻り値を返します。それ以外の場合、destroy オペレーションは POA の破棄後に戻り値を返します。

注記 このリリースの BEA Tuxedo では、マルチスレッドをサポートしていません。そのため、オブジェクト呼び出しのコンテキストで呼び出しを行う場合、wait_for_completionTRUE に指定しないでください。この指定を行うと、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_completionTRUE に指定しないでください。したがって、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 でインプリメントされるオブジェクトの寿命を指定します。指定可能な値は次のとおりです。

LifespanPolicy オブジェクトが create_POA に渡されない場合、寿命方針のデフォルトは TRANSIENT に設定されます。

注記 この関数がサポートされるのは、共同クライアント/サーバのみです。

例外

特にありません。

PortableServer::IdAssignmentPolicy

概要

作成された POA の ObjectIds の生成元をアプリケーションにするか、ORB にするかを指定します。

説明

POA::create_id_assignment_policy オペレーションで IdAssignmentPolicy インターフェイスを持つオブジェクトを取得します。このオブジェクトは、POA::create_POA オペレーションに渡され、作成された POA の ObjectId の生成元をアプリケーションにするか、ORB にするかを指定します。指定可能な値は次のとおりです。

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_*_argset_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 には、次の特別なメモリ管理規則があります。

以下の節では、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 を参照してください。

メンバ関数が失敗した場合、例外がスローされます。

表14-2 有効な TypeCode の種類およびパラメータ

TypeCode の種類

パラメータの一覧

CORBA::tk_null

なし

CORBA::tk_void

なし

CORBA::tk_short

なし

CORBA::tk_long

なし

CORBA::tk_long

なし

CORBA::tk_ushort

なし

CORBA::tk_ulong

なし

CORBA::tk_float

なし

CORBA::tk_double

なし

CORBA::tk_boolean

なし

CORBA::tk_char

なし

CORBA::tk_wchar

なし

CORBA::tk_octet

なし

CORBA::tk_Typecode

なし

CORBA::tk_Principal

なし

CORBA::tk_objref

{interface_id}

CORBA::tk_struct

{struct-name, member-name, TypeCode, ... (repeat pairs)}

CORBA::tk_union

{union-name, switch-TypeCode, label-value, member-name, enum-id, ...}

CORBA::tk_enum

{enum-name, enum-id, ...}

CORBA::tk_string

{maxlen-integer}

CORBA::tk_wstring

{maxlen-integer}

CORBA::tk_sequence

{TypeCode, maxlen-integer}

CORBA::tk_array

{TypeCode, length-integer}


 

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 では、例外の定義を示します。

表14-3 例外の定義

例外

説明

CORBA::UNKNOWN

未知の例外。

CORBA::BAD_PARAM

無効なパラメータが受け渡されました。

CORBA::NO_MEMORY

動的メモリ割り当てが異常終了しました。

CORBA::IMP_LIMIT

インプリメンテーション制限に違反しました。

CORBA::COMM_FAILURE

通信障害。

CORBA::INV_OBJREF

無効なブジェクト・リファレンスです。

CORBA::NO_PERMISSION

試行されたオペレーションのパーミッションが存在しません。

CORBA::INTERNAL

ORB 内部エラー。

CORBA::MARSHAL

パラメータまたは結果のマーシャル時にエラーが発生しました。

CORBA::INITIALIZE

ORB 初期化障害。

CORBA::NO_IMPLEMENT

オペレーションのインプリメンテーションが利用できません。

CORBA::BAD_TYPECODE

タイプ・コードが間違っています。

CORBA::BAD_OPERATION

無効なオペレーションです。

CORBA::NO_RESOURCES

要求を処理するためのリソースが不足しています。

CORBA::NO_RESPONSE

要求に対する応答がまだ利用できません。

CORBA::PERSIST_STORE

永続ストレージの障害。

CORBA::BAD_INV_ORDER

ルーチン呼び出しが順不同です。

CORBA::TRANSIENT

一時障害のため、要求が再度呼び出されます。

CORBA::FREE_MEM

メモリを解放できません。

CORBA::INV_IDENT

無効な識別子構文です。

CORBA::INV_FLAG

無効なフラグが指定されています。

CORBA::INTF_REPOS

インターフェイス・リポジトリへのアクセス時にエラーが発生しました。

CORBA::BAD_CONTEXT

コンテキスト・オブジェクトの処理中にエラーが発生しました。

CORBA::OBJ_ADAPTER

オブジェクト・アダプタによってエラーが検出されました。

CORBA::DATA_CONVERSION

データ変換エラー。

CORBA::OBJECT_NOT_EXIST

オブジェクトが存在しません。リファレンスを削除してください。

CORBA::TRANSACTION_REQUIRED

トランザクションが必要です。

CORBA::TRANSACTION_ROLLEDBACK

トランザクションがロールバックされました。

CORBA::INVALID_TRANSACTION

無効なトランザクションです。


 

オブジェクトが存在しない場合

削除済みのオブジェクトを呼び出すと、常に 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

 

back to top previous page next page