名前
CORBA_ORB_register_reply_interceptor
形式
void CORBA_ORB_register_reply_interceptor( CORBA_ORB orb, void (*funcptr)(void), CORBA_Environment *env );
機能説明
引数の関数ポインタ(funcptr)で指定した関数を出口関数として登録します。登録した出口関数は、サーバアプリケーションのインタフェース実装関数が処理を完了し、クライアントへリプライを送信した後に実行されます。
なお、インタフェース実装関数にonewayが指定されているなど、クライアントへリプライが送信されない場合でも、インタフェース実装関数の処理が完了した後に出口関数が実行されます。
パラメタ
復帰値
正常復帰した場合、env構造体の_majorにはCORBA_NO_EXCEPTIONが設定されます。
異常終了した場合、env構造体の_majorにはCORBA_SYSTEM_EXCEPTIONが設定され、_idと_minorに詳細情報が設定されます。設定される例外情報の意味は以下のとおりです。マイナーコードの意味については、“メッセージ集”の“CORBAサービスから通知される例外情報/マイナーコード”を参照してください。
活性化関数(CORBA_BOA_impl_is_readyまたはCORBA_BOA_obj_is_ready)発行後に、本関数が発行されました。
出口関数の関数ポインタ(funcptr)にNULLが指定されました。
クライアント用ライブラリ(ODWINCPP.LIB)が使用されています。
既に出口関数が登録されています。
注意事項
出口関数は以下の形式にする必要があります。
-------------------
void 出口関数名()
-------------------
一つのアプリケーションにつき、登録できる出口関数は一つです。
活性化関数(CORBA_BOA_impl_is_readyまたはCORBA_BOA_obj_is_ready)を発行するよりも前に、本関数を発行する必要があります。
本関数で登録した出口関数の処理が監視時間(インプリメンテーションリポジトリ定義のreply_interceptor_timeoutで設定。デフォルトは300秒)以内に終了しなかった場合、アプリケーションは強制終了されます。このため、本関数を使用する場合は、アプリケーション自動再起動機能が存在するワークユニット配下でのアプリケーション運用を推奨します。
クライアント用ライブラリ(ODWINCPP.LIB)では使用できません。
使用例
void exitfunc() { /* 出口関数の処理 */ } int main( int argc, char *argv[] ) { CORBA_ORB orb; CORBA_Environment env; orb = CORBA_ORB_init( &argc, argv, FJ_OM_ORBid, &env ); CORBA_ORB_register_reply_interceptor( orb, exitfunc, &env ); ... } |