動的スケルトンインタフェース
(DSI: Dynamic Skeleton Interface)


 
4.4.2.2. PortableServer::Servantクラス
 
4.4.2.17. PortableServer::DynamicImplementationクラス
 
4.4.1.9. CORBA::ServerRequestクラス


名前

PortableServer::Servant::_default_POA - デフォルトPOAを取り出す

形式

機能説明

デフォルトPOAを取り出します。

通常、このメソッドはルートPOAを返します。このメソッドをオーバーライドすることでルートPOAとは異なるPOAを返すこともできます。

戻り値

デフォルトPOAを返します。

エラー

CORBA標準例外がthrowされます。


名前

PortableServer::Servant::__version

- 実装オブジェクトのバージョンを得る

形式

機能説明

実装オブジェクトのバージョンを返します。

__version関数は、クライアント側がCORBA::Object::__version関数を呼び出したとき、実際に結果を返す関数です。__version関数のデフォルト動作は"1.0"文字列を返すのみですが、オブジェクト実装クラスでオーバライドすることにより、動作を変えることができます。

envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。

戻り値

バージョン情報を文字列で返します。戻り値は自動的に解放されます。

エラー

CORBA標準例外がthrowされます。

関連項目

CORBA::Object::__version


名前

PortableServer::Servant::__lifetime

- 実装オブジェクトのライフタイムを得る

PortableServer::Servant::__createtime

- 実装オブジェクトの生成時刻を得る

形式

機能説明

__lifetime関数は実装オブジェクトのライフタイムを返します。

__createtime関数は実装オブジェクトの生成時刻を返します。

envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。

__lifetime関数と__createtime関数は、クライアント側がCORBA::Object::__lifetime関数、CORBA::Object::__createtime関数を呼び出したとき、実際に結果を返す関数です。__createtime関数のデフォルト動作はC++オブジェクトが生成されたときの時刻を返します。__lifetime関数のデフォルト動作は「現在の時刻 - __createtimeの結果」を返します。それぞれの関数をオブジェクト実装クラスでオーバライドすることにより、動作を変えることができます。

戻り値

秒単位で計測した時間をCORBA::ULong型で返します。

生成した時刻は1970年1月1日00:00:00 UTCからの時間を返します。

エラー

CORBA標準例外がthrowされます。

関連項目

CORBA::Object::__lifetime, CORBA::Object::__createtime


名前

PortableServer::Servant::__status

- オブジェクトのステータスを得る

形式

機能説明

実装オブジェクトのステータスを返します。

__status関数はクライアント側がCORBA::Object::__status関数を呼び出したとき、実際に結果を返す関数です。__status関数のデフォルト動作は0の値を返すのみですが、オブジェクト実装クラスでオーバライドすることにより、動作を変えることができます。

戻り値

ステータスの値をCORBA::ULong型で返します。

エラー

CORBA標準例外がthrowされます。

関連項目

CORBA::Object::__status


名前

PortableServer::Servant::__stop

- 実装オブジェクトが動作するプロセスの終了

形式

機能説明

クライアントからの呼び出しによって実装オブジェクトが動作するプロセスを終了させたいときに、このオペレーションを使います。

__stop関数は、クライアント側がCORBA::Object::__stop関数を呼び出したとき、実際の処理をする関数です。

本来、__stop関数は何もしません。しかし、オブジェクト実装クラスで__stop関数をオーバライドすることにより、動作を変えることができます。例えば、CORBA::ORB::run関数の処理から抜けるようにするにはオーバーライドした関数内でCORBA::ORB::shutdown関数を呼び出します。

envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。

戻り値

ありません。

エラー

CORBA標準例外がthrowされます。

関連項目

CORBA::Object::__stop


名前

PortableServer::DynamicImplementation::_this

- 呼び出し対象のオブジェクトを取り出す

形式

機能説明

このメソッドは、呼び出し対象のオブジェクトがDSIサーバントと対応付けられているとき、その対象オブジェクトのオブジェクトリファレンスをCORBA::Object_ptr型で返します。

DSIサーバントは複数の異なる型のCORBAオブジェクトを実現することができるため、戻り値にインタフェース固有の型では返しません。

戻り値

呼び出しの対象となっているオブジェクトをCORBA::Object_ptr型で返します。

エラー

DSIサーバントのとき、かつ、invoke関数の処理開始から終了の間以外のとき、または呼び出し対象のオブジェクトがDSIサーバントと対応付けられていないときに呼び出すと、PortableServer::POA::WrongPolicy例外がthrowされます。それ以外はCORBA標準例外がthrowされます。

関連項目

PortableServer::DynamicImplementation::invoke,

PortableServer::DynamicImplementation::_primary_interface,

[ アプリケーション開発ガイド(CORBA) > 1. CORBA アプリケーション > 1.2. プログラミング・開発ガイド > 1.2.2. Object Broker > 1.2.2.6. Object Broker C++の機能 > Dynamic Skeleton Interface (DSI)]

注意

IDLコンパイラが生成したスケルトンクラスは、_thisメソッドをオーバーライドし、インタフェース固有の型("インタフェース名"_ptr)で返します。


名前

PortableServer::DynamicImplementation::invoke

- ORBからサーバアプリケーションへの入口

機能説明

クライアントがオペレーションを呼び出したとき、ORBはサーバアプリケーションを呼び出します。そのときPOAから呼び出されるのがinvokeです。サーバアプリケーション開発者は、PortableServer::DynamicImplementationを継承した実装クラスを作成します。invokeの典型的な実装は次のとおりです。

  1. requestからオペレーション名を取り出す。
  2. オペレーションのIN引数を取り出す。
  3. オペレーションを実行する。
  4. オペレーションのOUT引数、戻り値あるいは例外をrequestに設定する。

(例)

戻り値

ありません。

エラー

CORBA標準例外がthrowされます。

関連項目

PortableServer::DynamicImplementation::_primary_interface,

PortableServer::DynamicImplementation::_this,

CORBA::ServerRequest::operation,

CORBA::ServerRequest::ctx,

CORBA::ServerRequest::arguments,

CORBA::ServerRequest::set_result,

CORBA::ServerRequest::set_exception,

[ アプリケーション開発ガイド(CORBA) > 1. CORBA アプリケーション > 1.2. プログラミング・開発ガイド > 1.2.2. Object Broker > 1.2.2.6. Object Broker C++の機能 > Dynamic Skeleton Interface (DSI)]


名前

PortableServer::DynamicImplementation::_primary_interface

- 呼び出し対象のインタフェースのリポジトリIDを取り出す

形式

機能説明

oidpoaの組み合わせに合致したインタフェースのリポジトリIDを取り出します。このメソッドは、POAが呼び出し時に、呼び出し対象のインタフェースを取り出すために呼び出します。サーバアプリケーション開発者は、このメソッドをオーバーライドする必要があります。サーバントが複数のインタフェースをサポートしているときは、適切なインタフェースのリポジトリIDを返すように実装します。

戻り値

基底インタフェースのリポジトリIDが返ります。

エラー

CORBA標準例外がthrowされます。

関連項目

PortableServer::DynamicImplementation::invoke,

PortableServer::DynamicImplementation::this,

[ アプリケーション開発ガイド(CORBA) > 1. CORBA アプリケーション > 1.2. プログラミング・開発ガイド > 1.2.2. Object Broker > 1.2.2.6. Object Broker C++の機能 > Dynamic Skeleton Interface (DSI)]


名前

CORBA::ServerRequest::operation - オペレーション名を得る

形式

機能説明

クライアントが呼び出したオペレーションおよび属性の名前を返します。オペレーション名はIDLで定義した名前で表現されます。属性名は、取り出しと設定とで表現する名前が異なります。取り出しの名前には"_get_"が、設定の名前には"_set_"がIDLで定義した名前の前につきます。

また、CORBA::Objectのオペレーションのうち、_get_interface、_get_implementation、_is_aはサーバにリクエストが渡ることがあります。これらの名前はそれぞれ、"_interface"、_implementation"、"_is_a"です。

戻り値

オペレーション名を文字列で返します。

エラー

CORBA標準例外がthrowされます。

関連項目

CORBA::ServerRequest::ctx,

CORBA::ServerRequest::arguments,

CORBA::ServerRequest::set_result,

CORBA::ServerRequest::set_exception

注意

戻り値を変更したり、削除してはいけません。


名前

CORBA::ServerRequest::ctx - コンテキストを得る

形式

機能説明

IDL定義でコンテキスト指定のあるオペレーションをクライアントが呼び出したとき、サーバアプリケーションは、PortableServer::DynamicImplementation::invoke内で、オペレーションの引数を取り出したあと、このメソッドを使ってCORBA::ServerRequestからコンテキストを取り出します。

このメソッドは1回だけ呼び出すことができます。2回以上呼び出した場合はCORBA::BAD_INV_ORDER例外がthrowされます。

また、CORBA::ServerRequest::argumentsを呼び出す前やCORBA::ServerRequest::set_result, CORBA::ServerRequest::set_exceptionを呼び出した後で呼び出した場合もCORBA::BAD_INV_ORDER例外がthrowされます。

戻り値

コンテキストが返ります。

エラー

2回以上呼び出した場合や呼び出し順序が不正だった場合はCORBA::BAD_INV_ORDER例外がthrowされます。

関連項目

CORBA::ServerRequest::operation,

CORBA::ServerRequest::ctx,

CORBA::ServerRequest::arguments,

CORBA::ServerRequest::set_result,

CORBA::ServerRequest::set_exception

Contextインタフェース

注意

コンテキストもオペレーションのシグニチャの一部です。クライアント−サーバ間のシグニチャが一致しないときの動作は保証されません。


名前

CORBA::ServerRequest::arguments - 引数リストを得る

形式

機能説明

本関数はparametersの引数情報をもとにCORBA::ServerRequestから引数を取り出します。

サーバアプリケーションは、parametersにあらかじめ引数のタイプコードとモードを設定しておきます。

引数がないときはparametersにヌル・ポインタを指定します。引数が複数あるときは、IDLオペレーション定義の左側から順に設定します。

argumentsを呼び出した後、parametersからINおよびINOUT引数の値を取り出します。そして、オペレーション実行後、parametersにINOUTおよびOUT引数の値を設定します。

(例) 例外処理は省略します

この関数は1回だけ呼び出すことができます。2回以上呼び出したときには、CORBA::BAD_INV_ORDER例外(minor() = EMinor_AlreadyCalled)がthrowされます。

また、CORBA::ServerRequest::set_exceptionメソッドを呼び出した後に、このメソッドを呼び出してもCORBA::BAD_INV_ORDER例外がthrowされます。

戻り値

ありません。

エラー

2回以上呼び出したとき、もしくは、CORBA::ServerRequest::set_exceptionメソッドを呼び出した後に、このメソッドを呼び出したときはCORBA::BAD_INV_ORDER例外がthrowされます。

関連項目

CORBA::ServerRequest::operation,

CORBA::ServerRequest::ctx,

CORBA::ServerRequest::set_result,

CORBA::ServerRequest::set_exception,

引き数リストを表すインタフェース

注意

クライアント−サーバ間のデータの型や数が一致しないときの動作は保証されません。

引数に渡したCORBA::NVListのメモリ領域を解放するのは、CORBA::ServerRequest側の役割です。


名前

CORBA::ServerRequest::set_result - 戻り値をセットする

形式

機能説明

オペレーションの戻り値をCORBA::ServerRequestにセットします。

このメソッドは、CORBA::ServerRequest::argumentsメソッドを呼び出したあとに1回だけ呼び出します。また、CORBA::ServerRequest::set_exceptionを呼び出した後に呼んではいけません。呼び出す順序を間違えたり、2回以上呼び出したときには、CORBA::BAD_INV_ORDER例外がthrowされます。

(例) 例外処理は省略します

戻り値

ありません。

エラー

呼び出す順序を間違えたり、2回以上呼び出したときには、CORBA::BAD_INV_ORDER例外がthrowされます。

関連項目

CORBA::ServerRequest::operation,

CORBA::ServerRequest::ctx,

CORBA::ServerRequest::arguments,

CORBA::ServerRequest::set_exception,

クラス CORBA::Any

注意

クライアント−サーバ間の戻り値の型が一致しないときの動作は保証されません。

引数に渡したCORBA::Anyのメモリ領域を解放するのは、CORBA::ServerRequest側の役割です。


名前

CORBA::ServerRequest::set_exception - 例外をセットする

形式

機能説明

オペレーションの結果例外が起きたとき、その例外をCORBA::ServerRequestにセットします。valueには例外を挿入したものを指定します。

この関数は、例外発生時に1回だけ呼び出します。2回以上呼び出したときには、CORBA::BAD_INV_ORDER例外(minor() = EMinor_AlreadyCalled)がthrowされます。また、valueに例外を挿入していないときには、CORBA::BAD_PARAM例外がthrowされます。

なお、例外が発生しなかったときは、この関数を呼び出す必要はありません。

(例)

戻り値

ありません。

エラー

CORBA標準例外がthrowされます。

関連項目

CORBA::ServerRequest::operation,

CORBA::ServerRequest::ctx,

CORBA::ServerRequest::arguments,

CORBA::ServerRequest::set_result,

クラス CORBA::Any

注意

例外もオペレーションのシグニチャの一部です。クライアント−サーバ間のシグニチャが一致しないときの動作は保証されません。

引数に渡したCORBA::Anyのメモリ領域を解放するのは、CORBA::ServerRequest側の役割です。