Objectインタフェース |
全てのCORBAオブジェクトが呼び出し可能な擬似オブジェクトインタフェースです。
4.4.1.14. CORBA::Objectクラス |
全てのCORBAオブジェクトの基底クラスです。このクラスのメソッドを使うことで、オブジェクトに関する各種情報を取り出したり、オブジェクトリファレンスを比較するなどの操作を行うことができます。また、_request, _create_requestによって動的起動インタフェース(DII)を利用する上で不可欠なオブジェクトを生成するのもCORBA::Objectクラスの役割です。
なお、Object Brokerではオブジェクトのより詳しい情報を得るためのメソッドなどが追加されています。
_request, _create_request | リクエストオブジェクトの生成 |
_duplicate | 論理的コピーを作る |
_get_implementation | インプリメンテーション情報を取り出す |
_get_interface | オブジェクトのインターフェースの取得 |
_is_a | オブジェクトがインタフェースをサポートしているかどうか |
_non_existent | 実装オブジェクトの存在の有無 |
_is_equivalent | オブジェクトリファレンスの比較 |
_hash | オブジェクトリファレンスのハッシュ値 |
_nil | nilオブジェクトリファレンスを返す |
__version | 実装オブジェクトのバージョンを得る |
__hostname | 実装オブジェクトのホスト名を得る |
__ipaddress | 実装オブジェクトのIPアドレスを得る |
__lifetime | 実装オブジェクトのライフタイムを得る |
__createtime | 実装オブジェクトの生成時刻を得る |
__createobjreftime | オブジェクトリファレンスの生成時刻を得る |
__status | 実装オブジェクトのステータスを得る |
__stop | 実装オブジェクトが動作するプロセスの終了 |
__is_active | 実装オブジェクトが動作するプロセスの状態 |
CORBA::Object::_request, CORBA::Object::_create_request
- リクエストオブジェクトの生成
#include <orb.h> CORBA::Request_ptr CORBA::Object::_request( const char* operation, CORBA::Environment& env = Ob_default_environment() ); CORBA::Status CORBA::Object::_create_request( CORBA::Context_ptr ctx, const char* operation, CORBA::NVList_ptr arg_list, CORBA::NamedValue_ptr result, CORBA::Request_ptr& request, CORBA::Flags req_flags, CORBA::Environment& env = Ob_default_environment() ); CORBA::Status CORBA::Object::_create_request( CORBA::Context_ptr ctx, const char* operation, CORBA::NVList_ptr arg_list, CORBA::NamedValue_ptr result, CORBA::ExceptionList_ptr excepts, CORBA::ContextList_ptr contexts, CORBA::Request_ptr& request, CORBA::Flags req_flags, CORBA::Environment& env = Ob_default_environment() );
リクエスト疑似オブジェクトを生成して返します。_request関数は戻り値として返し、2つの_create_request関数はrequestに返します。
operationにはオペレーション名を指定します。
ctxにはコンテキストを指定します。
arg_listには引数の情報を渡します。
resultには戻り値の情報を指定します。
req_flagsにはオペレーションがonewayなら0を指定し、それ以外は1を指定します。
envは関数内で起きた例外の情報を取得するために指定します(オプション)。
_request関数は、リクエストオブジェクトを生成したあと、引数や戻り値などのオペレーション情報をセットしたいときに使います。
_create_request関数は、オペレーション情報をあらかじめ作成してから、リクエストオブジェクトを生成するときに使います。
オペレーションのIDL定義で、例外やコンテキストの指定をしたものは、exceptsとcontextsの引数がある方の関数を使います。
それぞれの引数に渡す情報がないときには、それぞれの疑似オブジェクトのnilオブジェクトを指定してください。ナルポインタを渡すと例外が返ります。
_request関数は生成したリクエストオブジェクトを返します。
_create_request関数は関数の実行結果が正常か異常かを返します。正常ならばCORBA::Status_Successを返し、異常ならばCORBA::Status_Failedを返します。生成したリクエストオブジェクトはrequest引数に返します。
生成されたリクエストオブジェクトは呼び出し側に解放する責任があります。
CORBA標準例外がthrowされます。
CORBA::Object::_duplicate - 論理的コピーを作る
#include <orb.h> CORBA::Object_ptr CORBA::Object::_duplicate( CORBA::Object_ptr obj, CORBA::Environment& env = Ob_default_environment() );
CORBA::Object::_duplicateはobjで指定されたオブジェクトリファレンスの論理的コピーを作ります。
envは関数内で起きた例外の情報を取得するために指定します(オプション)。
オブジェクトリファレンスの論理的コピーを作ります。
CORBA標準例外がthrowされます。
CORBA::ORB::string_to_object, CORBA::ORB::object_to_string, PortableServer::POA::create_reference, PortableServer::POA::create_reference_with_id
CORBA::Object::_get_implementation
- インプリメンテーション情報を取り出す
#include <orb.h> CORBA::ImplementationDef_ptr CORBA::Object::_get_implementation( CORBA::Environment& env = Ob_default_environment() );
CORBA::Object::_get_implementationはインプリメンテーション情報を取り出します。
envは関数内で起きた例外の情報を取得するために指定します(オプション)。
オブジェクトリファレンス生成時に指定した、インプリメンテーション定義が返ります。
CORBA標準例外がthrowされます。
CORBA::Object::_get_interface - オブジェクトのインターフェースの取得
#include <orb.h> CORBA::InterfaceDef_ptr CORBA::Object::_get_interface( CORBA::Environment& env = Ob_default_environment() );
オブジェクトリファレンスのインターフェースを表す、インターフェースオブジェクトのオブジェクトリファレンスを返します。
オブジェクトリファレンスが他のベンダのものであったり、あらかじめインターフェースリポジトリを使う設定にしてあるときは、実装オブジェクトに問い合わせます。それ以外は、疑似インターフェースオブジェクトを作成し返します。
あらかじめインターフェースリポジトリを使う設定にするときは、CORBA::ORB::__use_IR関数を使います。
envは関数内で起きた例外の情報を取得するために指定します(オプション)。
オブジェクトリファレンスのインターフェースオブジェクトを返します。
戻り値は呼び出し側に解放する責任があります。
CORBA標準例外がthrowされます。
CORBA::Object::_get_implementation
CORBA::Object::_is_a - オブジェクトがインタフェースをサポートしているかどうか
#include <orb.h> CORBA::Boolean CORBA::Object::_is_a( const char* logical_type_id, CORBA::Environment& env = Ob_default_environment() );
オブジェクトリファレンスに対する実装オブジェクトが、logical_type_idをもつインターフェースをサポートしていれば1を返し、そうでなければ0を返します。
envは関数内で起きた例外の情報を取得するために指定します(オプション)。
たとえば、次の継承関係のインターフェースはこのような結果になります。
// IDL interface A {}; interface B : A {}; interface C : B {}; // C++ CORBA::Object_ptr aobj = new AImpl; // AImplをAの実装クラスとする CORBA::Object_ptr bobj = new BImpl; // BImplをBの実装クラスとする CORBA::Object_ptr cobj = new CImpl; // CImplをCの実装クラスとする aobj->_is_a("IDL:A:1.0") == 1; aobj->_is_a("IDL:B:1.0") == 0; aobj->_is_a("IDL:C:1.0") == 0; bobj->_is_a("IDL:A:1.0") == 1; bobj->_is_a("IDL:B:1.0") == 1; bobj->_is_a("IDL:C:1.0") == 0; cobj->_is_a("IDL:A:1.0") == 1; cobj->_is_a("IDL:B:1.0") == 1; cobj->_is_a("IDL:C:1.0") == 1;
インターフェースをサポートしているか否かを表すブーリアン値を返します。
CORBA標準例外がthrowされます。
インターフェースリポジトリがないときはCORBA標準例外がthrowされます。
CORBA::Object::_non_existent - 実装オブジェクトの存在の有無
#include <orb.h> CORBA::Boolean CORBA::Object::_non_existent( CORBA::Environment& env = Ob_default_environment() );
オブジェクトリファレンスに対する実装オブジェクトが存在していれば0を返し、そうでなければ1を返します。
envは関数内で起きた例外の情報を取得するために指定します(オプション)。
実装オブジェクトが存在するか否かを表すブーリアン値を返します。
CORBA標準例外がthrowされます。
CORBA::Object::_is_equivalent - オブジェクトリファレンスの比較
#include <orb.h> CORBA::Boolean CORBA::Object::_is_equivalent( CORBA::Object_ptr o, CORBA::Environment& env = Ob_default_environment() );
oが同じものであれば1を返し、そうでなければ0を返します。
envは関数内で起きた例外の情報を取得するために指定します(オプション)。
oが等しいか否かのブーリアン値を返します。
CORBA標準例外がthrowされます。
CORBA::Object::_hash - オブジェクトリファレンスのハッシュ値
#include <orb.h> CORBA::ULong CORBA::Object::_hash( CORBA::ULong maximum, CORBA::Environment& env = Ob_default_environment() );
オブジェクトリファレンスをハッシュテーブルで管理するときに使います。maximumはハッシュテーブルのサイズを指定します。
envは関数内で起きた例外の情報を取得するために指定します(オプション)。
オブジェクトリファレンスを表す一意の数値をmaximumで割ったときのあまりを返します。
CORBA標準例外がthrowされます。
CORBA::Object::_nil - nilオブジェクトリファレンスを返す
#include <orb.h> static CORBA::Object_ptr CORBA::Object::_nil( CORBA::Environment& env = Ob_default_environment() );
常に同じnilオブジェクトリファレンスを返します。
この戻り値をCORBA::is_nil関数に渡すと1が返ります。
戻り値をCORBA::Object_var型に代入したり、CORBA::release関数で解放しても、何も起こりません。解放しなくても問題ありません。
また、_duplicate関数の引数に用いても何も起こりません。
はじめて呼び出されたときにメモリが足りないとCORBA::NO_MEMORY例外がthrowされます。
CORBA::Object::__version
- 実装オブジェクトのバージョンを得る
#include <orb.h> char* CORBA::Object::__version( CORBA::Environment& env = Ob_default_environment() );
実装オブジェクトのバージョンを返します。
__version関数は呼び出し側のためのインターフェースです。また、__version関数を呼び出したとき、実際に結果を返す関数はPortableServer::Servant::__version関数です。__version関数のデフォルト動作は"1.0"文字列を返すのみですが、オブジェクト実装クラスでオーバライドすることにより、動作を変えることができます。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
バージョン情報を文字列で返します。戻り値は解放してください。
CORBA標準例外がthrowされます。
PortableServer::Servant::__version
CORBA::Object::__hostname - 実装オブジェクトのホスト名を得る
CORBA::Object::__ipaddress - 実装オブジェクトのIPアドレスを得る
// IDL typedef sequence<string> Ob::StringSeq; // C++ #include <orb.h> Ob::StringSeq* CORBA::Object::__hostname( CORBA::Environment& env = Ob_default_environment() ); Ob::StringSeq* CORBA::Object::__ipaddress( CORBA::Environment& env = Ob_default_environment() );
__hostname関数は実装オブジェクトが動作するホスト名、alias名を返します。
__ipaddress関数は実装オブジェクトが動作するホストのIPアドレスを返します。
複数のIPアドレスをもつホストも存在することがありますので、シーケンス型で返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
ホスト名、IPアドレスともに文字列のシーケンス型で返します。
CORBA標準例外がthrowされます。
CORBA::Object::__lifetime
- 実装オブジェクトのライフタイムを得る
CORBA::Object::__createtime
- 実装オブジェクトの生成時刻を得る
CORBA::Object::__createobjreftime - オブジェクトリファレンスの生成時刻を得る
#include <orb.h> CORBA::ULong CORBA::Object::__lifetime( CORBA::Environment& env = Ob_default_environment() ); CORBA::ULong CORBA::Object::__createtime( CORBA::Environment& env = Ob_default_environment() ); CORBA::ULong CORBA::Object::__createobjreftime( CORBA::Environment& env );
__lifetime関数は実装オブジェクトのライフタイムを返します。
__createtime関数は実装オブジェクトの生成時刻を返します。
__createobjreftime関数はオブジェクトリファレンスの生成時刻を返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
__lifetime関数と__createtime関数は呼び出し側のためのインターフェースです。また、これらの関数を呼び出したとき、実際に結果を返す関数はPortableServer::Servant::__lifetime関数とPortableServer::Servant::__createtime関数です。__createtime関数のデフォルト動作はC++オブジェクトが生成されたときの時刻を返します。__lifetime関数のデフォルト動作は「現在の時刻 - __createtimeの結果」を返します。それぞれの関数をオブジェクト実装クラスでオーバライドすることにより、動作を変えることができます。
秒単位で計測した時間をCORBA::ULong型で返します。
生成した時刻は1970年1月1日00:00:00 UTCからの時間を返します。
CORBA標準例外がthrowされます。
PortableServer::Servant::__lifetime, PortableServer::Servant::__createtime
CORBA::Object::__status
- オブジェクトのステータスを得る
#include <orb.h> CORBA::ULong CORBA::Object::__status( CORBA::Environment& env = Ob_default_environment() );
実装オブジェクトのステータスを返します。
__status関数は呼び出し側のためのインターフェースです。また、この関数を呼び出したとき、実際に結果を返す関数はPortableServer::Servant::__status関数です。__status関数のデフォルト動作は0の値を返すのみですが、オブジェクト実装クラスでオーバライドすることにより、動作を変えることができます。
ステータスの値をCORBA::ULong型で返します。
CORBA標準例外がthrowされます。
PortableServer::Servant::__status
CORBA::Object::__stop
- 実装オブジェクトが動作するプロセスの終了
#include <orb.h> void CORBA::Object::__stop( CORBA::Environment& env = Ob_default_environment() );
クライアントからの呼び出しによって実装オブジェクトが動作するプロセスを終了させたいときに、このオペレーションを使います。
__stop関数は呼び出し側のためのインターフェースです。また、この関数を呼び出したとき、実際に結果を返す関数はPortableServer::Servant::__stop関数です。
本来、PortableServer::Servant::__stop関数は何もしません。しかし、オブジェクト実装クラスで__stop関数をオーバライドすることにより、動作を変えることができます。例えば、CORBA::ORB::run関数の処理から抜けるようにするにはオーバーライドした関数内でCORBA::ORB::shutdown関数を呼び出します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
ありません。
CORBA標準例外がthrowされます。
PortableServer::Servant::__stop
CORBA::Object::__is_active - 実装オブジェクトが動作するプロセスの状態
#include <orb.h> CORBA::Boolean CORBA::Object::__is_active( CORBA::Environment& env = Ob_default_environment() );
実装オブジェクトが動作するプロセスが活性化されていれば1を返し、そうでなければ0を返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
ありません。
CORBA標準例外がthrowされます。