CORBAプログラミング・リファレンス

     前  次    新規ウィンドウで目次を開く  新規ウィンドウで索引を開く  PDFとして表示 - 新規ウィンドウ  Adobe Readerを取得 - 新規ウィンドウ
コンテンツはここから始まります

CORBA API

この章では、C++と拡張C++でのコア・メンバー関数のOracle Tuxedo実装について説明します。また、擬似オブジェクトとそのC++クラスとの関係についても説明します。擬似オブジェクトとは、ネットワーク経由で転送不可能なオブジェクト参照のことです。擬似オブジェクトはその他のオブジェクトと似ていますが、ORBによって所有されるため拡張ができません。

注意: この章に記載されている情報の一部は、Object Management Group (OMG)が発行している「Common Object Request Broker: Architecture and SpecificationRevision 2.4.2」(2001年2月)からの引用です。また、この情報は、OMGの権限を得て転載しています。
注意: Oracle Tuxedo CORBA JavaクライアントとOracle Tuxedo CORBA JavaクライアントORBはTuxedo 8.1で非推奨になり、Tuxedo 9.xではサポートされなくなりました。 Oracle Tuxedo CORBA JavaクライアントとOracle Tuxedo CORBA JavaクライアントORBのすべてのテキスト・リファレンスや関連するサンプル・コードは、以下の場合にのみ使用してください。
注意: サード・パーティのCORBA Java ORBのテクニカル・サポートは、各ベンダーによって提供されます。Oracle Tuxedoでは、サード・パーティのCORBA Java ORBに関する技術的なサポートやマニュアルは提供していません。

 


グローバル・クラス

次のOracle Tuxedoクラスは、スコープ内においてグローバルです。

上記のクラスには、Oracle Tuxedoの開発で使用する定義済みの型、クラス、および関数が含まれています。

CORBAクラスには、CORBAで定義されている、オブジェクト・リクエスト・ブローカ(ORB)を使用する際に不可欠なクラス、データ型、およびメンバー関数があります。Oracle TuxedoのCORBAへの拡張は、Tobj C++クラスに含まれています。Tobjクラスには、Oracle TuxedoでCORBAへの拡張として用意されているデータ型、ネストされたクラス、およびメンバー関数があります。

Oracle Tuxedo製品でCORBAのデータ型とメンバー関数を使用するには、CORBA::接頭辞が必要です。たとえば、Longの場合はCORBA::Longとなります。同様に、Oracle Tuxedo製品でTobjのネストされたクラスとメンバー関数を使用するには、Tobj::接頭辞が必要です。たとえば、FactoryFinderの場合はTobj::FactoryFinderとなります。

 


擬似オブジェクト

擬似オブジェクトは、CORBAクラス内部にあるローカル・クラスとして表されます。擬似オブジェクトおよび対応するメンバー関数の名前は、ネストされたクラス構造で付けます。たとえば、ORBオブジェクトの場合はCORBA::ORB、Currentオブジェクトの場合はCORBA::Currentとなります。

 


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によって、AnyがValueでメモリーの所有権を想定するかどうかが決まります。ReleaseCORBA_TRUEの場合、Anyは所有権を想定してInitAny引数の値をディープ・コピーします。ReleaseCORBA_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::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は、メソッド呼出しに関連付けられたオプションのコンテキスト情報を提供します。

これらのメンバー関数の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オブジェクトを作成するまで、親はnilです。

戻り値

メンバー関数が成功した場合、Contextオブジェクトの親コンテキストを返します。親コンテキストがnilの場合もあります。CORBA::is_nilメンバー関数を使用すると、オブジェクト参照がnilかどうかをテストできます。

メンバー関数が失敗した場合、例外がスローされます。CORBA::is_nilメンバー関数を使用すると、オブジェクト参照がnilかどうかをテストできます。

 


CORBA::Context::set_one_value

概要

Contextオブジェクトの指定の属性値を設定します。

C++バインディング

void CORBA::Context::set_one_value (
const char * AttrName,
const CORBA::Any & AttrValue);

引数

AttrName

設定する属性の名前。

AttrValue

属性の値。現在、Oracle 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

属性の名前および値。現在、Oracle 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メンバー関数」を参照してください。

これらのメンバー関数の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の標準オペレーションで操作できます。

これらのメンバー関数の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ネームスペースを参照してください。

Oracle Tuxedoソフトウェアでは、CORBA Revision 2.2で定義されているオブジェクト参照オペレーションを使用しています。これらのオペレーションが依存するのは、型Objectのみです。したがって、オペレーションはCORBAネームスペースの中で通常の関数として記述できます。

注意: Oracle Tuxedoソフトウェアでは、BOAではなくPOAを使用しているため、非推奨のget_implementation()メンバー関数は認識されません。このメンバー関数を参照しようとすると、コンパイル・エラーが発生します。

これらのメンバー関数の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)を複製します。指定のオブジェクト参照がnilの場合、_duplicate関数はnilオブジェクト参照を返します。この呼出しで返されるオブジェクトは、CORBA::releaseで解放するか、または自動的に破棄されるようにCORBA::Object_varを割り当てる必要があります。

この関数では、CORBAシステム例外がスローされる場合があります。

戻り値

複製オブジェクト参照を返します。指定のオブジェクト参照がnilの場合は、nilオブジェクト参照を返します。

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をインクルードします。マクロの定義方法については、『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

概要

nilオブジェクトのリファレンスを返します。

C++バインディング

CORBA::Object_ptr CORBA::Object::_nil();

引数

なし。

説明

このメンバー関数は、nilオブジェクト参照を返します。指定のオブジェクトがnilであるかどうかをテストするには、適切なCORBA::is_nilメンバー関数を使用します。この関数については、「CORBA::release」を参照してください。_nilメンバー関数のCORBA:is_nilルーチンを呼び出すと、常にCORBA_TRUEが返されます。

戻り値

nilオブジェクト参照を返します。

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

これらのメンバー関数の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メンバー関数」の一覧にある型のいずれかでなければなりません。

説明

このメンバー関数は、呼出し側が今後リファレンスにアクセスしないことを示します。その結果、関連付けられたリソースの割当てが解除される場合があります。指定したオブジェクト参照がnilの場合、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メンバー関数」の一覧にある型のいずれかでなければなりません。

説明

このメンバー関数は、指定のオブジェクト参照がnilかどうかを判別するために使用します。ORBで定義したnilオブジェクト参照の特別な値がオブジェクト参照にある場合、TRUEが返されます。

このオペレーションでは、CORBA例外はスローされない場合があります。

戻り値

指定のオブジェクトがnilの場合は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);
// Extension
void destroy();
// Extensions to support sharing context between threads
void Ctx get_ctx() = 0;
void set_ctx(Ctx) = 0;
void clear_ctx() = 0;
// Thread extensions
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メソッドは、Oracle Tuxedoシステムが管理しているスレッド内からは呼び出さないでください。Oracle Tuxedoシステムでは、適切にコンテキストを伝播し、管理しているスレッドを自動的にクリーンアップします。Oracle 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

Oracle WebLogic Enterpriseバージョン4.2でサポートされているPolicyType値は、BiDirPolicy::BIDIRECTIONAL_POLICY_TYPEのみです。

val

Oracle WebLogic Enterpriseバージョン4.2でサポートされているval値は、BiDirPolicy::BidirectionalPolicyValueのみです。

例外

PolicyError

この例外は、ORB::create_policyオペレーションに渡されたパラメータ値に問題があることを示すために発生します。個別の例外と理由を表14-1に示します。

表14-1 例外と理由
例外
理由
BAD_POLICY
リクエストされたポリシーはORBで認識されません。
UNSUPPORTED_POLICY
リクエストされたポリシーはORBで有効と認識されますが、現在サポートされていません。
BAD_POLICY_TYPE
ポリシーにリクエストされた値の型は、そのPolicyTypeで無効です。
BAD_POLICY_VALUE
ポリシーにリクエストされた値は有効な型ですが、その型の有効な範囲に入っていません。
UNSUPPORTED_POLICY_VALUE
ポリシーにリクエストされた値は有効な型で、その型の有効な範囲に入っていますが、現在サポートされていません。

説明

このオペレーションは、指定された初期状態で特定の型のポリシー・オブジェクトの新しいインスタンスを作成するために呼び出します。ポリシーの要求された型と内容を解釈できなかったために、create_policyが新しいポリシー・オブジェクトのインスタンス化に失敗した場合、適切な理由によりポリシー・エラー例外が発生します。(以下の例外を参照。)

リモート・クライアントではIIOPを使用しているため、コールバックを使用してBidirectionalPolicy引数をリモート・クライアントに指定します。この引数は、コールバックを使用するネイティブ・クライアント、またはOracle Tuxedoサーバーには使用しません。これは、Oracle Tuxedoドメイン内部のマシンが個別に通信するためです。

GIOP 1.2より前では、双方向ポリシーはTCP/IPを使用するIIOPでは利用できませんでした。GIOP 1.0および1.1の通信は一方向のため、リクエストがクライアントからサーバーに送信され、レスポンスがサーバーからクライアントに送信されるだけでした。サーバーがリクエストをクライアント・マシンに戻す、つまりコールバックする場合、サーバー・マシンでは別の一方向の接続を確立する必要がありました(ここでいう「接続」とは、オペレーティング・システムのリソースのことであり、物理的な個別のワイヤや通信パスのことではありません。接続ではリソースを使用するので、接続数を最小限にすることが求められます)。

最新のOracle Tuxedo C++ソフトウェアでは、GIOP 1.2をサポートしています。これにより、リクエストの送信と受信の両方でTCP/IP接続を再利用できるようになりました。接続を再利用することにより、リモート・クライアントがOracle Tuxedoドメインにコールバック・リファレンスを送信するときにリソースを節約できます。共同クライアント/サーバーでは、接続でOracle 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メソッドを呼び出した場合、Oracle 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

概要

アプリケーション管理のスレッドに関連付けられたリソースが解放可能であることを、Oracle Tuxedoシステムに通知します。このメソッドは、マルチスレッド・サーバー・アプリケーションの開発をサポートします。

C++バインディング

void CORBA::ORB::inform_thread_exit(CORBA::TID threadId) 

パラメータ

threadId

削除中のアプリケーション管理スレッドの論理スレッドID。

戻り値

なし。

説明

このメソッドは、次の状態をOracle Tuxedoシステムに通知します。

注意: このオペレーションは、アプリケーションが作成および管理するスレッドに対してのみ呼び出します。Oracle 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 ();

引数

None.

例外

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ネームスペースには慎重な管理が必要になります。これを達成するため、OMGは、将来、このインタフェースを介してアプリケーションで必要になるサービスを定義し、それらのサービスの名前を指定します。

現在、予約されている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

現在のスレッドに関連付けるコンテキスト。

戻り値

なし。

説明

このメソッドは、現在のアプリケーション管理スレッドのコンテキストを設定します。指定するコンテキスト・パラメータは、Oracle Tuxedoシステムによって管理されている実行済みのスレッド、または初期化済みのアプリケーション管理スレッドですでに取得されています。

注意: set_ctxメソッドは、Oracle Tuxedoシステムが管理しているスレッドでは呼び出さないでください。Oracle Tuxedoシステムでは、管理しているスレッドに対して適切にコンテキストを自動的に伝達します。Oracle 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)のデフォルトのクライアントのタイプを使用します。システム・レジストリは、Oracle Tuxedoのインストール時に初期化されています。

サーバーのポート

Oracle 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

概要

Oracle TuxedoのCORBAオブジェクトにアクセスしたり、CORBAオブジェクトを提供するために、Oracle 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]

説明

Oracle Tuxedo CORBA C++ ORBは、Oracle Tuxedoに組み込まれているライブラリです。このライブラリを使用すると、IIOPまたはIIOP-SSLを使用してOracle Tuxedoのオブジェクトにアクセスしたり、このオブジェクトを提供するためのCORBAベースのアプリケーションを開発できます。また、ORBのコマンドラインのオプションを使用すると、カスタマイズが可能になります。

パラメータ

[– ORBid {BEA_IIOP | BEA_TOBJ}]

BEA_IIOPは、IIOPまたはIIOP-SSLプロトコルで通信するクライアント環境とサーバー環境をサポートするように、ORBが構成されることを明示的に指定します。 BEA_TOBJは、Oracle Tuxedoドメイン内でTGIOPプロトコルでのみ通信可能なネイティブ・クライアント環境をサポートするように、ORBが構成されることを明示的に指定します。 上記のパラメータを指定しない場合、ORBは、ORB自身がデプロイされ、その環境で使用するように構成される環境を検出します。

[– ORBInitRef ObjectId=ObjectURL]

ORB初期リファレンス引数である-ORBInitRefでは、初期サービスに対して任意のオブジェクト参照を指定できます。ObjectIDは、CORBA仕様で定義されるサービスの既知のオブジェクトIDを表します。このメカニズムにより、ORBのインストール時に定義しなかった、新しい初期サービスのObject IDでORBを構成できます。ObjectURLには、CORBA仕様で定義するCORBA::ORB::string_to_objectオペレーションでサポートされている任意のURLスキームを指定できます。URLの構文に誤りがある場合、または実装で定義された方法が無効と判定された場合、CORBA::ORB_initによって表14-2にリストするCORBA::BAD_PARAM標準例外が生成されます。

表14-2 CORBA::BAD_PARAM標準例外のマイナー・コード
マイナー・コード
説明
BadSchemeName
指定のスキームはORB実装によって認識されました。ただし、サポートされているスキームは、IOR、corbaloc、corbalocs、およびcorbanameのみです。
BadAddress
アドレスの形式がORB実装で認識されません。ホスト名は、DNSに従って指定するか、またはドットで区切る形式のクラスCのIPアドレスとして指定する必要があります。
BadSchemeSpecificPart
アドレスの形式がORB実装で認識されません。ホスト名は、DNSに従って指定するか、またはドットで区切る形式のクラスCのIPアドレスとして指定する必要があります。
BadSchemeSpecificPart
指定されたスキームでは、URLの一部の形式が正しくありません。

[– ORBDefaultInitRef <ObjectURL>]

ORBのデフォルト初期参照引数である-ORBDefaultInitRefは、-ORBInitRefを使用して明示的に指定されていない初期参照の解決をサポートします。また、現在のTobj_Bootstrapオブジェクトに指定されているIIOPリスナー・アドレスと同様の機能を備えています。 – ORBInitRef引数とは異なり、-ORBDefaultInitRefでは、「/ (スラッシュ)」と文字列化したオブジェクト・キーを追加した後に、初期オブジェクト参照を識別するための新規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オプションは、国際版または米国/カナダ版のOracle Tuxedoセキュリティ・アドオン・パッケージがインストールされている場合にのみ使用できます。

[– ORBmutualAuth]

リモート・アプリケーションからSSL接続を受け付けるときに証明書ベースの認証を有効にするかどうかを指定します。 – ORBmutualAuthオプションは、国際版または米国/カナダ版のOracle Tuxedoセキュリティ・アドオン・パッケージがインストールされている場合にのみ使用できます。

[– ORBpeerValidate {detect | warn | none}]

Oracle Tuxedo ORBによって開始されたアウトバウンド接続のピアのデジタル証明書が、Secure Socket Layer (SSL)プロトコル・ハンドシェークの一部として受信された場合に、Oracle Tuxedo CORBA ORBがどのように動作するかを指定します。検証は安全な接続の開始側のみが行います。検証では、サーバーのデジタル証明書にあるドメイン名の指定と同じネットワーク・アドレスにピア・サーバーが実際にあるかを確認します。この検証は、技術的にはSSLプロトコルの一部ではなく、Webブラウザで行われているチェックと同じものです。 値がdetectの場合、Oracle Tuxedo CORBA ORBは、接続に使用されるオブジェクト参照で指定されたホストがピアのデジタル証明書で指定されたドメイン名と一致するかを確認します。照合に失敗した場合、ORBはピアの認証を拒否し、接続を破棄します。このチェックによって、介在者の攻撃から保護します。 値がwarnの場合、Oracle Tuxedo CORBA ORBは、接続に使用されるオブジェクト参照で指定されたホストがピアのデジタル証明書で指定されたドメイン名と一致するかを確認します。照合に失敗した場合、ORBはユーザー・ログにメッセージを書き込み、接続処理を続行します。 値がnoneの場合、Oracle Tuxedo CORBA ORBは、ピアの検証を行わずに接続処理を続行します。 – ORBpeerValidateオプションは、国際版または米国/カナダ版のOracle Tuxedoセキュリティ・アドオン・パッケージがインストールされている場合にのみ使用できます。 値を指定しない場合は、デフォルトのdetectが指定されます。

[– ORBport port-number]

リモートCORBAクライアントからの接続を受け付けるために、ORBで使用するネットワーク・アドレスを指定します。通常、システム管理者は、動的範囲ではなくポート番号の「ユーザー」範囲からクライアントのポート番号を割り当てます。これにより、共同クライアント/サーバーでポートの競合を防ぐことができます。 これは、Oracle Tuxedo CORBA ORBが永続オブジェクト参照を作成するための必須パラメータです。永続オブジェクト参照では、ORBが再起動した場合でも、オブジェクト参照内に格納されているのと同じポート番号を指定する必要があります。一時オブジェクト参照の場合は、ORBで動的に任意のポートを取得できます。 port-numberには、Oracle Tuxedo CORBA ORBプロセスがリクエストの受信をリスニングするTCPポート番号を指定します。port-numberには、0から65535までの数字を指定します。

[– ORBsecurePort port-number]

IIOPリスナー/ハンドラでSecure Sockets Layer・プロトコルを使用して安全な接続をリスニングするために使用するポート番号を指定します。ポート番号を指定せずにコマンドラインのオプションを指定した場合、OMGで割り当てられたポート番号684がSSL接続に使用されます。 port-numberには、Oracle Tuxedo CORBA ORBプロセスがリクエストの受信をリスニングするTCPポート番号を指定します。port-numberには、0から65535までの数字を指定します。 Oracle Tuxedo CORBA ORBへの接続に安全なものだけを有効にするには、
管理者は– ORBport– ORBsecurePortで指定するポート番号を同じ値に構成します。 – ORBsecurePortオプションは、国際版または米国/カナダ版のOracle Tuxedoセキュリティ・アドオン・パッケージがインストールされている場合にのみ使用できます。

移植性

Oracle Tuxedo CORBA ORBは、UNIXおよびMicrosoft Windowsオペレーティング・システム上でOracle Tuxedoに組み込まれているクライアントまたはサーバーとしてサポートされています。また、Windows XPオペレーティング上でOracle Tuxedoに組み込まれているクライアントとしてもサポートされています。

相互運用性

Oracle Tuxedo CORBA ORBは、TCP/IP接続でGIOPプロトコル・バージョン1.0、1.1、または1.2をサポートする、ORB準拠のすべてのIIOPと相互運用できます。また、Oracle Tuxedo CORBA ORBは、オブジェクト参照でTAG_SSL_SEC_TRANSタグ付きコンポーネントの使用をサポートし、Secure Sockets Layer・プロトコルのバージョン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ポリシー(Oracle 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

このリリースのOracle Tuxedoでは、この引数はFALSEに指定します。

wait_for_completion

この引数は、オペレーションが直ちに戻り値を返すかどうかを示します。

説明

このオペレーションは、POAおよびすべての下位POAを破棄します。POAとその名前は、同じプロセスで後から再作成できます。ただし、POAManager::deactivateオペレーションで同じプロセスによる関連付けられたPOAの再作成を無効にしている場合は除きます。

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

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

注意: このリリースのOracle 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

このバージョンのOracle 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関数も継承します。このバージョンのOracle 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の呼出しはすべてキューに登録されます。このバージョンのOracle 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以降のソフトウェア、およびOracle Tuxedoバージョン8.0以降のソフトウェアでは、この引数は常にFALSEに設定する必要があります。

wait_for_completion

この引数をTRUEに指定すると、deactivateオペレーションは、プロセス内のリクエストがすべて完了した後にのみ戻り値を返します。この引数をFALSEに指定すると、deactivateオペレーションは、関連付けられたPOAの状態の変更後に戻り値を返します。

例外

POAマネージャの状態が非アクティブ化のときに発行すると、PortableServer::POAManager::AdapterInactive例外が発生します。

説明

このオペレーションは、POAManagerの状態を非アクティブ化に変更します。状態を非アクティブ化に移行すると、関連付けられたPOAは、未実行のリクエストおよびすべての新しいリクエストを拒否します。

注意: このリリースのOracle 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メンバー関数

これらのメンバー関数の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
    // argument manipulation helper functions
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、およびreturn_valueメンバー関数は、属性ベースのアクセサの使用を簡略化するものとして追加されます。

以下のセクションでは、これらのメンバー関数について説明します。

 


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

メモリーに割り当てる文字列の長さ。

説明

このメンバー関数は、文字列用のメモリーを動的に割り当てます。割当てが実行できなかった場合は、nilポインタを返します。また、len+1文字を割り当てるので、結果として得られた文字列には後続のNULL文字を保持するのに十分なスペースを確保できます。このメンバー関数で割り当てられたメモリーを解放するには、CORBA::string_freeメンバー関数を呼び出します。

この関数では、CORBA例外はスローされません。

戻り値

関数が成功した場合、戻り値は文字列オブジェクト用に新しく割り当てられたメモリーへのポインタです。関数が失敗した場合、戻り値はnilポインタです。

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例外はスローされません。

戻り値

関数が成功した場合、戻り値は新しい文字列へのポインタです。関数が失敗した場合、戻り値はnilポインタです。

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()メンバー関数で文字列に割り当てられたメモリーの割当てを解除します。この関数にnilポインタを渡すと、すべてのアクションが実行されなくなります。

この関数では、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 ワイド文字列の例
// Get a string from the user:
cout << "String?";
char mixed[256]; // this should be big enough!
char lower[256];
char upper[256];
wchar_t wmixed[256];
cin >> mixed;
// Convert the string to a wide char string,
// because this is what the server will expect.
mbstowcs(wmixed, mixed, 256);
// Convert the string to upper case:
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;
// Convert the string to lower case:
CORBA::WString_var v_lower = v_simple->to_lower(wmixed);
wcstombs(lower, v_lower.in(), 256);
cout << lower << endl;
// Everything succeeded:
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へのnilオブジェクト参照を返します。また、作成された型に埋め込まれたTypeCodeリファレンスの初期化にも使用できます。ただし、nil TypeCodeリファレンスは、引数としてオペレーションに渡すことができません。これは、TypeCodesがオブジェクト参照ではなく値として渡されるためです。

これらのメンバー関数の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には、次の特別なメモリー管理規則があります。

以下のセクションでは、これらのメンバー関数について説明します。

 


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-3を参照してください。

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

表14-3 有効な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-3を参照してください。

戻り値

関数が成功した場合、TypeCodeオブジェクト参照に格納されているパラメータ数を返します。

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

 


CORBA::TypeCode::parameter

概要

索引入力引数で指定されたパラメータを取り出します。

C++バインディング

CORBA::Any * CORBA::TypeCode::parameter (
CORBA::Long Index) const;

引数

Index

パラメータ・リストの索引。取り出すパラメータを指定するのに使用します。

説明

このメンバー関数は、索引入力引数で指定されたパラメータを取り出します。各種のパラメータの一覧は、表14-3を参照してください。

戻り値

メンバー関数が成功した場合、戻り値は索引入力引数で指定されたパラメータへのポインタです。

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

 


Exceptionメンバー関数

Oracle 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が例外を識別するために使用します。Oracle 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-4に例外を定義します。

表14-4 例外の定義
例外
説明
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メンバー関数」を参照してください。

これらのメンバー関数の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


  先頭に戻る       前  次