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

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

CORBA API

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

注意 : この章の一部の情報は、Object Management Group (OMG) の「Common Object Request Broker: Architecture and Specification, Revision 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 クラスの各メンバー関数について説明します。

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 は、メソッド呼び出しに関連付けられたオプションのコンテキスト情報を提供します。

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 メンバー関数」を参照してください。

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 ネームスペースを参照してください。

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

注意 : Oracle 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) を複製します。指定のオブジェクト参照が 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 をインクルードします。マクロの定義方法については、『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

概要

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

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

説明

このメンバー関数は、呼び出し側が今後リファレンスにアクセスしないことを示します。その結果、関連付けられたリソースの割り当てが解除される場合があります。指定したオブジェクト参照が 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);
// 拡張
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 メソッドは、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 オペレーションに渡されたパラメータ値に問題があることを示すために発生します。個別の例外と理由を次に示します。

例外
理由
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 ();

引数

特にありません。

例外

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

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

戻り値

特にありません。

説明

このメソッドは、現在のアプリケーション管理スレッドのコンテキストを設定します。指定するコンテキスト パラメータは、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]

-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 オプションは、国際版または米国/カナダ版の Oracle Tuxedo セキュリティ アドオン パッケージがインストールされている場合にのみ使用できます。

[– ORBmutualAuth]

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

[– ORBpeerValidate {detect | warn | none}]

Oracle Tuxedo ORB によって開始されたアウトバウンド接続のピアのデジタル証明書を、セキュア ソケット レイヤ (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 リスナ/ハンドラでセキュア ソケット レイヤ プロトコルを使用して安全な接続をリスンするために使用するポート番号を指定します。ポート番号を指定せずにコマンドラインのオプションを指定した場合、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 タグ付きコンポーネントの使用をサポートし、セキュア ソケット レイヤ プロトコルのバージョン 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 メンバー関数

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

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

 


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 ワイド文字列の例
// ユーザから文字列を取得
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 への nil オブジェクト参照を返します。また、作成された型に埋め込まれた TypeCode リファレンスの初期化にも使用できます。ただし、nil 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 メンバー関数

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


  ページの先頭       前  次