WebOTX Manual V11.1 (第6版) 目次を表示 |
動的起動インタフェース (DII: Dynamic Invocation Interface) |
IDLコンパイラが生成したスタブを用いたオペレーション呼び出しをStatic Invocation Interface(SII)と呼ぶのに対し、あらかじめオペレーション情報をアプリケーションプログラムの外に置き、実行時にそのオペレーション情報を取り出してリクエストを組み立ててオペレーションを呼び出すことをDynamic Invocation Interface(DII)と呼びます。この仕組みを用いることで、将来インタフェースが変更される可能性のあるプログラムに柔軟性をもたせることができます。また、SIIはリクエストの送信と受信を同期的に処理しますが、DIIは、非同期に処理することも可能です。これにより、サーバの応答を待つ間にローカルな処理を行うといった、複雑なアプリケーションを作成することができます。
DIIを使うとき、インタフェースリポジトリにオペレーション情報を格納すると、CORBA::Object::_get_interface、CORBA::ORB::create_operation_listなども使えるようになります。
1.8. CORBA::Requestクラス |
CORBA::Requestクラスは、オブジェクト呼び出しを行うための機能を提供します。CORBA::RequestオブジェクトはCORBA::Object::_request、CORBA::Object::_create_requestによって作成されます。前者は、リクエストオブジェクトを作成してからそのリクエストオブジェクトにオペレーション情報を設定するという手順で使います。 後者は、オペレーションの情報を用意してからリクエストオブジェクトを作成するという手順で使います。オペレーション情報には、オペレーション名、引数リスト、戻り型、ユーザ例外リスト、コンテキストリストがあります。
Object Brokerでは通信に関する情報の取得や設定を行うなどの拡張機能があります。
target | ターゲットオブジェクトリファレンスを得る |
operation | オペレーション名を得る |
arguments | 引数リストを得る |
result | リクエストの戻り値を得る |
exceptions | 例外リストを得る |
contexts | コンテキストリストを得る |
env | Environmentを得る |
ctx(CORBA::Context_ptr) | コンテキストオブジェクトを設定する |
ctx | コンテキストオブジェクトを得る |
invoke | オペレーションを実行する |
send_oneway | 応答を要求しないリクエストを送信する |
send_deferred | 応答を要求するリクエストを送信する |
get_response | 応答を受信する |
poll_response | 応答の到着を確認する |
_duplicate | リクエストの論理的コピーを作る |
_nil | nilリクエストを返す |
add_in_arg | IN引数を追加する |
add_in_arg(const char*) | IN引数を追加する |
add_inout_arg | INOUT引数を追加する |
add_inout_arg(const char*) | INOUT引数を追加する |
add_out_arg | OUT引数を追加する |
add_out_arg(const char*) | OUT引数を追加する |
set_return_type | 戻り値の型情報を設定する |
return_value | 戻り値を得る |
__is_oneway | send_onewayで送られたかどうかを知る |
__is_deferred | send_deferredまたはinvokeで送られたかどうかを知る |
__is_call | 送信を実行するかどうかを知る |
__not_call | 送信を実行しないことを指定する |
__will_call | 送信を実行することを指定する |
__reply | 擬似応答メッセージ設定用参照を得る |
CORBA::Request::target - ターゲットオブジェクトリファレンスを得る
#include <orb.h> CORBA::Object_ptr CORBA::Request::target( CORBA::Environment& env = Ob_default_environment() ) const;
リクエストのターゲットオブジェクトのオブジェクトリファレンスを返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
ターゲットのオブジェクトリファレンスを返します。
CORBA標準例外がthrowされます。
戻り値を変更したり、削除してはいけません。
CORBA::Request::operation - オペレーション名を得る
#include <orb.h> const char* CORBA::Request::operation( CORBA::Environment& env = Ob_default_environment() );
リクエストのオペレーション名を返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
オペレーション名文字列を返します。
CORBA標準例外がthrowされます。
戻り値を変更したり、削除してはいけません。
CORBA::Request::arguments - 引数リストを得る
#include <orb.h> CORBA::NVList_ptr CORBA::Request::arguments( CORBA::Environment& env = Ob_default_environment() );
リクエストの引数リストを返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
引数リストをCORBA::NVList_ptr型で返します。
CORBA標準例外がthrowされます。
戻り値を削除してはいけません。
CORBA::Request::result - リクエストの戻り値を得る
#include <orb.h> CORBA::NamedValue_ptr CORBA::Request::result( CORBA::Environment& env = Ob_default_environment() );
リクエストの戻り値を返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
リクエストの戻り値をCORBA::NamedValue_ptr型で返します。
CORBA標準例外がthrowされます。
戻り値を削除してはいけません。
CORBA::Request::exceptions - 例外リストを得る
#include <orb.h> CORBA::ExceptionList_ptr CORBA::Request::exceptions( CORBA::Environment& env = Ob_default_environment() );
リクエストの例外リストを返します。 CORBA::ExceptionListは例外リストを操作するクラスです。
namespace CORBA { class ExceptionList { public: // 例外リストの長さを返す CORBA::ULong count( CORBA::Environment& env = Ob_default_environment() ); // tcの論理コピーを作り例外リストに追加する void add( CORBA::TypeCode_ptr tc, CORBA::Environment& env = Ob_default_environment() ); // tcの論理コピーを作らずに例外リストに追加する void add_consume( CORBA::TypeCode_ptr tc, CORBA::Environment& env = Ob_default_environment() ); //index番目の例外を取得する // 戻り値を消去してはいけない CORBA::TypeCode_ptr item( CORBA::ULong index, CORBA::Environment& env = Ob_default_environment() ); // index番目の例外を削除する CORBA::Status remove( CORBA::ULong index, CORBA::Environment& env = Ob_default_environment() ); }; };
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
例外リストをCORBA::ExceptionList_ptr型で返します。
CORBA標準例外がthrowされます。
戻り値を削除してはいけません。
CORBA::Request::contexts - コンテキストリストを得る
#include <orb.h> CORBA::ContextList_ptr CORBA::Request::contexts( CORBA::Environment& env = Ob_default_environment() );
リクエストのコンテキストリストを返します。CORBA::ContextListはコンテキストの操作を行うクラスです。
namespace CORBA { class ContextList { public: // コンテキストリストの長さを返す CORBA::ULong count( CORBA::Environment& env = Ob_default_environment() ); // コンテキストリストに追加する(const char*) void add( const char* ctxt, CORBA::Environment& env = Ob_default_environment() ); // コンテキストリストに追加する(char*) void add_consume( char* ctxt, CORBA::Environment& env = Ob_default_environment() ); // index番目のコンテキストを取得する // 戻り値を消去してはいけない const char* item( CORBA::ULong index, CORBA::Environment& env = Ob_default_environment() ); // index番目のコンテキストを削除する CORBA::Status remove( CORBA::ULong index, CORBA::Environment& env = Ob_default_environment() ); }; };
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
コンテキストリストをCORBA::ContextList_ptr型で返します。
CORBA標準例外がthrowされます。
戻り値を削除してはいけません。
CORBA::Request::env - Environmentを得る
#include <orb.h> CORBA::Environment_ptr CORBA::Request::env( CORBA::Environment& env = Ob_default_environment() );
リクエストのEnvironmentを返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
リクエストのEnvironmentをCORBA::Environment_ptr型で返します。
CORBA標準例外がthrowされます。
戻り値を削除してはいけません。
CORBA::Request::ctx(CORBA::Context_ptr)
- コンテキストオブジェクトを設定する
#include <orb.h> void CORBA::Request::ctx( CORBA::Context_ptr ctx, CORBA::Environment& env = Ob_default_environment() );
リクエストにコンテキストctxを設定します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
ありません。
CORBA標準例外がthrowされます。
CORBA::Request::ctx - コンテキストオブジェクトを得る
#include <orb.h> CORBA::Context_ptr CORBA::Request::ctx( CORBA::Environment& env = Ob_default_environment() );
リクエストに設定されたコンテキストを返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
コンテキストオブジェクトが返ります。
CORBA標準例外がthrowされます。
CORBA::Request::ctx(CORBA::Context_ptr)
戻り値を削除してはいけません。
CORBA::Request::invoke - オペレーションを実行する
#include <orb.h> CORBA::Status CORBA::Request::invoke( CORBA::Environment& env = Ob_default_environment() );
リクエストを送信して、応答を待ちます。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
CORBA::Status型でオペレーションの成否が返ります。
CORBA標準例外がthrowされます。
CORBA::Request::send_oneway - 応答を要求しないリクエストを送信する
#include <orb.h> CORBA::Status CORBA::Request::send_oneway( CORBA::Environment& env = Ob_default_environment() );
応答を要求しないリクエストを送信します。このリクエストを受信したサーバは返事を返しません。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
CORBA::Status型でオペレーションの成否が返ります。
CORBA標準例外がthrowされます。
onewayオペレーションではサーバに要求を送信しおわった後に発生したエラーを知ることはできません。
CORBA::Request::send_deferred - 応答を要求するリクエストを送信する
#include <orb.h> CORBA::Status CORBA::Request::send_deferred( CORBA::Environment& env = Ob_default_environment() );
応答を要求するリクエストを送信します。オペレーションの結果はget_responseにより受信することができます。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
CORBA::Status型でオペレーションの成否が返ります。
CORBA標準例外がthrowされます。
CORBA::Request::poll_response,
CORBA::Request::get_response - 応答を受信する
#include <orb.h> CORBA::Status CORBA::Request::get_response( CORBA::Environment& env = Ob_default_environment() );
send_deferredにより送信したオペレーションの結果を受信します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
CORBA::Status型でオペレーションの成否が返ります。
CORBA標準例外がthrowされます。
CORBA::Request::poll_response - 応答の到着を確認する
#include <orb.h> CORBA::Boolean CORBA::Request::poll_response( CORBA::Environment& env = Ob_default_environment() );
send_deferredにより送信したオペレーションの結果が受信できる状態であるかどうかを確認します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
受信待ちをせずに応答が受信できる状態のとき1が返ります。
受信待ちが発生する場合は0が返ります。
CORBA標準例外がthrowされます。
自動起動サーバの場合などLocationForwardメッセージを受信した場合であっても1が返ります。この場合get_responseを呼び出すと転送先のサーバプロセスが応答を返すまで返ってきません。
CORBA::Request::_duplicate - リクエストの論理的コピーを作る
#include <orb.h> static CORBA::Request_ptr CORBA::Request::_duplicate( CORBA::Request_ptr req, CORBA::Environment& env = Ob_default_environment() );
引数reqの論理的コピーを作ります。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
引数reqの論理的コピーが返ります。
CORBA標準例外がthrowされます。
CORBA::Request::_nil - nilリクエストを返す
#include <orb.h> static CORBA::Request_ptr CORBA::Request::_nil( CORBA::Environment& env = Ob_default_environment() );
nilリクエストを返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
nilリクエストが返ります。
CORBA標準例外がthrowされます。
CORBA::Request::add_in_arg - IN引数を追加する
#include <orb.h> CORBA::Any& CORBA::Request::add_in_arg( CORBA::Environment& env = Ob_default_environment() ); CORBA::Any& CORBA::Request::add_in_arg( const char* name, CORBA::Environment& env = Ob_default_environment() );
リクエストにIN引数を追加します。実際の引数は戻り値のCORBA::Any&型を使って設定します。引数設定関数は引数の順番どおりに呼び出さなければなりません。Object Brokerではname付きの形式でも、無しの形式でも結果は同じです。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
引数値設定用のCORBA::Any&が返ります。
CORBA標準例外がthrowされます。
CORBA::Request::add_inout_arg - INOUT引数を追加する
#include <orb.h> CORBA::Any& CORBA::Request::add_inout_arg( CORBA::Environment& env = Ob_default_environment() ); CORBA::Any& CORBA::Request::add_inout_arg( const char* name, CORBA::Environment& env = Ob_default_environment() );
リクエストにINOUT引数を追加します。実際の引数は戻り値のCORBA::Any&型を使って設定します。引数設定関数は引数の順番どおりに呼び出さなければなりません。Object Brokerではname付きの形式でも、無しの形式でも結果は同じです。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
引数値設定用のCORBA::Any&が返ります。
CORBA標準例外がthrowされます。
CORBA::Request::add_out_arg - OUT引数を追加する
#include <orb.h> CORBA::Any& CORBA::Request::add_out_arg( CORBA::Environment& env = Ob_default_environment() ); CORBA::Any& CORBA::Request::add_out_arg( const char* name, CORBA::Environment& env = Ob_default_environment() );
リクエストにOUT引数を追加します。実際の引数は戻り値のCORBA::Any&型を使って設定します。引数設定関数は引数の順番どおりに呼び出さなければなりません。Object Brokerではname付きの形式でも、無しの形式でも結果は同じです。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
引数型情報設定および引数値取り出し用のCORBA::Any&が返ります。
CORBA標準例外がthrowされます。
CORBA::Request::set_return_type - 戻り値の型情報を設定する
#include <orb.h> void CORBA::Request::set_return_type( CORBA::TypeCode_ptr tc, CORBA::Environment& env = Ob_default_environment() );
リクエストに戻り値の型情報を設定します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
ありません。
CORBA標準例外がthrowされます。
CORBA::Request::return_value - 戻り値を得る
#include <orb.h> CORBA::Any& CORBA::Request::return_value( CORBA::Environment& env = Ob_default_environment() );
応答受信後のリクエストから戻り値を取り出します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
戻り値取り出し用のCORBA::Any&が返ります。
CORBA標準例外がthrowされます。
CORBA::Request::__is_oneway - send_onewayで送られたかどうかを知る
#include <orb.h> int CORBA::Request::__is_oneway();
フックの中で、リクエストがsend_onewayで送られたかどうかを知ります。
send_onewayで送られたとき0以外の値が返ります。
invokeあるいはsend_deferredで送られたときは0が返ります。
起こりません。
CORBA::Request::send_deferred,
この関数はフックの中でのみ正しい値を返します。
CORBA::Request::__is_deferred - send_deferredまたはinvokeで送られたかどうかを知る
#include <orb.h> int CORBA::Request::__is_deferred();
フックの中でリクエストがsend_deferredまたはinvokeで送られたかどうかを知ります。
send_deferredまたはinvokeで送られたとき0以外の値が返ります。
send_onewayで送られたときは0が返ります。
起こりません。
CORBA::Request::send_deferred,
この関数はフックの中でのみ正しい値を返します。
CORBA::Request::__is_call - 送信を実行するかどうかを知る
#include <orb.h> int CORBA::Request::__is_call();
フックの中でリクエストがサーバに送信されるかどうかを知ります。
送信されるとき0以外の値が返ります。
送信されないとき0が返ります。
起こりません。
この関数はフックの中でのみ正しい値を返します。
CORBA::Request::__not_call - 送信を実行しないことを指定する
#include <orb.h> int CORBA::Request::__not_call();
リクエストをサーバに送信せずに処理を終了させます。この関数はフック関数内で使用します。
ありません。
起こりません。
この関数はフックの中でのみ使用可能です。
CORBA::Request::__will_call - 送信を実行することを指定する
#include <orb.h> int CORBA::Request::__will_call();
リクエストをサーバに送信するよう指定します。この関数はフック関数内で使用します。
ありません。
起こりません。
この関数はフックの中でのみ使用可能です。
CORBA::Request::__reply - 擬似応答メッセージ設定用参照を得る
#include <orb.h> Ob_MesBuf& CORBA::Request::__reply();
__not_callでサーバに送信せずに処理を終了する場合に、応答メッセージをあたかも受信したかのように処理を継続するために用います。この関数はフック内で使用します。
擬似戻りメッセージ設定用Ob_MesBuf&型データが返ります。
起こりません。
この関数はフックの中でのみ使用可能です。