[Logo Mark of ITRON]情報家電のための分散ソフトウェアプラットフォームの構築
(JCGプロジェクト)


| index | 1章| 2章| 3章| 4章| 5章| 付録|

4章 「CORBA関連機能の利用方法」

目次にもどる3章へ5章へ

4.CORBA関連機能の利用方法

4.1 CORBA関連機能インターフェース仕様

CORBA関連機能を用いたアプリケーション作成に必要な関数のインターフェース仕様を説明する。

CORBA関連機能を用いたアプリケーションは、「4.1.1 リソース設定」以降に説明する関数の組合せにより実現可能である。

関数の組合せ方は、以下に示すディレクトリに存在するサンプルプログラムを参照。

corbaapl/sample/long/src (long型の引数、 戻り値をもつCORBAオペレーションサンプルプログラム)
corbaapl/sample/dync/src (動的登録サンプルプログラム)

4.1.1 リソース設定

【機能】
組込みCORBAリソース設定
【形式】
CORBA_int
ECORBA_init(SG_CORBA *corba_sg)
【引数(パラメータ)】
SG_CORBA *corba_def ユーザ定義リソース要求情報へのポインタ
【戻り値(リターンパラメータ)】
CORBA_SGOK 正常終了
CORBA_SGERR_SYS システム依存部リソース設定失敗
CORBA_SGERR_MRSHL マーシャリングリソース設定失敗
CORBA_SGERR_CON コネクション管理リソース設定失敗
CORBA_SGERR_GIOP GIOPリソース設定失敗
CORBA_SGERR_ORB ORBリソース設定失敗
CORBA_SGERR_POA POAリソース設定失敗
CORBA_SGERR_ASRV 自動起動リソース設定失敗
【説明】

CORBA関連機能を使用するターゲットマシンは、本機能の初期化時に本関数を1 度呼び出す必要がある。

本関数は、引数からCORBA関連機能が使用可能なリソース量の上限値と設定値 を得て、組込みCORBAのリソース管理機能を初期化する。

引数であるSG_CORBA型データの内容は以下の通り。

  typedef struct sg {
    CORBA_UsrDefine *sg_corba;
    ASRV_UsrDefine  *sg_asrv;
    ORB_UsrDefine   *sg_orb;
    POA_UsrDefine   *sg_poa;
    MRSHL_UsrDefine *sg_mrshl;
    GIOP_UsrDefine  *sg_giop;
    CON_UsrDefine   *sg_con;
    SYS_UsrDefine   *sg_sys;
    void            *sg_rfu1;
    void            *sg_rfu2;
    void            *sg_rfu3;
    void            *sg_rfu4;
  } SG_CORBA;

SG_CORBA型データの構成要素は以下の通り。

(1)CORBA_UsrDefine型データ
  typedef struct corba_init {
    CORBA_char              *corba_tgtnam;
    CORBA_unsigned_long     corba_srvnum;
    CORBA_unsigned_long     corba_memsz;
    CORBA_char              *corba_buffp;
    void                    *corba_rfu1;
    void                    *corba_rfu2;
    void                    *corba_rfu3;
    void                    *corba_rfu4;
  } CORBA_UsrDefine;
corba_tgtnam ターゲット名へのポインタ
corba_srvnum

ターゲットマシン上のCORBA関連機能を使用するサーバタスクの個数。CORBA関連機能のサーバタスクの起動方法は、以下の3通りである。

  • (a) 初期後ただちに生成/起動されるサーバ
  • (b) 初期後ただち自動起動サーバに登録され、リクエスト受信時に起動されるサーバ
  • (c) 稼働中に自動起動サーバに登録され、リクエスト受信時に起動されるサーバ

ASRV_UsrDefine構造体のメンバasrv_dservnmおよびasrv_ddobjnmと本メンバとの間では以下の関係が常に成り立つ。ASRV_UsrDefine構造体については後述の「(2) ASRV_UsrDefine型データ」を参照

corba_srvnm >= (asrv_dservnm + asrv_ddobjnm)

よって、上記(a)(b)(c)は、以下のような関係になる。

(a)+(b)+(c)= corba_srvnm
  • (a) = corba_srvnm - asrv_dservnm - asrv_ddobjnm
  • (b) = asrv_dservnm
  • (c) = asrv_ddobjnm
corba_memsz CORBA関連機能で使用可能なメモリ領域の合計サイズ。
corba_buffp 0固定。
corba_rfu1 予約領域
corba_rfu2
corba_rfu3
corba_rfu4

(2)ASRV_UsrDefine型データ
  typedef struct asrv_usrdef {
    ID                      asrv_aservid;
    PRI                     asrv_asrvpri;
    PRI                     asrv_dsrvpri;
    CORBA_unsigned_short    asrv_portnum;
    CORBA_unsigned_long     asrv_dservnm;
    CORBA_unsigned_long     asrv_ddobjnm;
    void                    *asrv_rfu1;
    void                    *asrv_rfu2;
    void                    *asrv_rfu3;
    void                    *asrv_rfu4;
  } ASRV_UsrDefine;
asrv_aservid 自動起動サーバのタスクID
asrv_asrvpri 自動起動サーバタスクのプライオリティ
asrv_dsrvpri

自動起動されるサーバタスクの初期プライオリティ
自動起動サーバのプライオリティよりも高いプライオリティを指定。

自動起動サーバによって起動されるサーバタスクは、生成/起動時には自動起動サーバよりも高いプリオリティで実行される。受信可能状態になるとユーザ指定された本来のプライオリティで走行する。

asrv_portnum

自動起動サーバのポート番号。

asrv_dservnm

自動起動されるサーバタスクの個数

asrv_ddobjnm

ターゲットシステム稼働中に動的に自動起動サーバに登録され、自動起動されるサーバタスクの個数

asrv_rfu1 予約領域
asrv_rfu2
asrv_rfu3
asrv_rfu4

(3)ORB_UsrDefine型データ

設定を必要とするリソースがないため0で固定


(4)POA_UsrDefine型データ
  typedef struct tagPOA_UsrDefine {
    CORBA_unsigned_long     poa_limit;
    CORBA_unsigned_long     map_limit;
    void                    *poa_rfu1;
    void                    *poa_rfu2;
    void                    *poa_rfu3;
    void                    *poa_rfu4;
  } POA_UsrDefine;
    
poa_limit CORBA関連機能で使用可能なオブジェクトアダプタ上限数
map_limit CORBA関連機能で使用可能なサーバント上限数
poa_rfu1 予約領域
poa_rfu2
poa_rfu3
poa_rfu4

(5)MRSHL_UsrDefine型データ

設定を必要とするリソースがないため0で固定


(6)GIOP_UsrDefine型データ

設定を必要とするリソースがないため0で固定


(7)CON_UsrDefine型データ
  typedef struct con_usr_define {
    CORBA_unsigned_long     con_srvlim;
    CORBA_unsigned_long     con_clilim;
    CORBA_unsigned_long     con_tmout;
    void                    *con_rfu1;
    void                    *con_rfu2;
    void                    *con_rfu3;
    void                    *con_rfu4;
  } CON_UsrDefine;
    
con_srvlim サーバタスク当たりのコネクション管理上限数
con_srvlim

サーバタスク当たりのコネクション管理上限数

サーバ側オブジェクトが使用可能なコネクションの合計値は、本メンバで設定される値とCORBA_UsrDefine型データのメンバcorba_srvnumで設定した値を掛け合わせた値である。

con_clilim

クライアントのコネクション管理上限数

本メンバで設定された値が、クライアントが使用できるコネクションの合計値となる。

con_tmout

サーバタスクの終了チェックを行う間隔(microseconds)

con_rfu1 予約領域
con_rfu2
con_rfu3
con_rfu4

(8)SYS_UsrDefine型データ

設定を必要とするリソースがないため0で固定




4.1.2 ORB

【機能】
ORB初期化
【形式】
CORBA_ORB
CORBA_ORB_init(int *argc, char **argv, CORBA_ORBid orb_identifier,CORBA_Environment *env);
【引数(パラメータ)】
int *argc コンフィグレーション情報数へのポインタ
char **argv コンフィグレーション情報格納領域の先頭アドレスへのポインタ
CORBA_ORBid orb_identifier ORBのID
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
正常終了 ORBオブジェクト
異常終了 NULL

正常終了および異常終了の判断は、本関数の引数*envに設定したCORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参照して行う。メンバ_majorの取り得る値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生
【説明】

ORBオブジェクトを獲得する。

アプリケーションがCORBA関連機能を初期化するために、引数orb_identifierに文字列"e-corba"を指定して本関数を呼び出す。

自動起動サーバによって起動されることを期待されている(永続化されたPOAを持つ)サーバタスクには、本関数の引数*argcに1を設定する。さらに、引数**argvに文字列"ServerName=<サーバ名>"の格納領域の先頭アドレスへのポインタを設定する必要がある。この<サーバ名>には、サーバタスクの名前を指定する。

名前を付けないタスクに関しては、引数*argcは0を指定する。

戻り値となるORBオブジェクトは、本関数内で獲得したメモリ領域を使用している。よって、ORBオブジェクトが不要となった場合、関数CORBA_Object_releaseによってメモリ領域を解放する必要がある。





【機能】
初期オブジェクト獲得
【形式】
CORBA_Object
CORBA_ORB_resolve_initial_references(CORBA_ORB orb, CORBA_char *object_name, CORBA_Environment *env)
【引数(パラメータ)】
CORBA_ORB orbORBオブジェクト
CORBA_char *object_name 獲得したい初期オブジェクトの名前へのポインタ
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
正常終了 CORBAオブジェクト
異常終了 NULL

正常終了か異常終了かの判断は、本関数の引数*envに設定したCORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参照して行う。メンバ_majorの取り得る値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生
【説明】

引数object_nameで指定されたサービスのCORBAオブジェクトを得る。

サーバ側のアプリケーションは、引数*object_nameに文字列"RootPOA"を指定することにより、POAの初期化を行い、CORBAオブジェクト型のRootPOAを獲得する。

本関数の引数orbは、関数CORBA_ORB_initで獲得したORBオブジェクトを指定する。

戻り値となるCORBAオブジェクトは、本関数内で獲得したメモリ領域を使用している。よって、CORBAオブジェクトが不要となった場合、関数CORBA_Object_releaseを用いてメモリ領域を解放する必要がある。





【機能】
CORBAオブジェクトを文字列に変換
【形式】
CORBA_char *
CORBA_ORB_object_to_string(CORBA_ORB orb, CORBA_Object obj, CORBA_Environment *env);
【引数(パラメータ)】
CORBA_ORB orb ORBオブジェクト
CORBA_Object obj CORBAオブジェクト
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
正常終了 文字列(IOR形式)
異常終了 NULL

正常終了か異常終了かの判断は、本関数の引数*envに設定したCORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参照して行う。メンバ_majorの取り得る値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生
【説明】

本関数は、引数objで指定されるCORBAオブジェクトを、インターオペラビリテ ィを考慮したIOR形式の文字列に変換する。

本関数の引数orbは、関数CORBA_ORB_initで獲得したORBオブジェクトを指定する。

戻り値となるIORは、本関数内で獲得したメモリ領域を使用している。よって、IORが不要となった場合、関数CORBA_freeを用いてメモリ領域を解放する必要がある。





【機能】
文字列をCORBAオブジェクトに変換
【形式】
CORBA_Object
CORBA_ORB_string_to_object(CORBA_ORB orb, CORBA_char *buf, CORBA_Environment *env);
【引数(パラメータ)】
CORBA_ORB orb ORBオブジェクト
CORBA_char *buf 文字列へのポインタ
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
正常終了 CORBAオブジェクト
異常終了 NULL

正常終了か異常終了かの判断は、本関数の引数*envに設定したCORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参照して行う。メンバ_majorの取り得る値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生
【説明】

引数*bufに指定された文字列(IOR形式)をCORBAオブジェクトに変換する。

クライアント側のアプリケーションは、本関数で得られたCORBAオブジェクトを使用してオペレーションを呼び出す。

本関数の引数orbは、関数CORBA_ORB_initで獲得したORBオブジェクトを指定する。

戻り値となるCORBAオブジェクトは、本関数内で獲得したメモリ領域を使用している。よって、CORBAオブジェクトが不要となった場合、関数CORBA_Object_releaseを用いてメモリ領域を解放する必要がある。





【機能】
リクエスト受信待ち
【形式】
void
CORBA_ORB_run(CORBA_ORB orb, CORBA_Environment *env);
【引数(パラメータ)】
CORBA_ORB orb ORBオブジェクト
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
なし

正常終了か異常終了かの判断は、本関数の引数*envに設定したCORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参照して行う。メンバ_majorの取り得る値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生
【説明】

サーバ側のオブジェクトは、本関数を呼び出し、クライアントからのリクエスト受信待ちループに入る。

本関数の引数orbは、関数CORBA_ORB_initで獲得したORBオブジェクトを指定する。

クライアントからのリクエストを受信した場合、適切なサーバントを呼び出す。





【機能】
サーバ終了設定
【形式】
void
CORBA_ORB_shutdown(CORBA_ORB orb, CORBA_Environment *env);
【引数(パラメータ)】
CORBA_ORB orb ORBオブジェクト
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
なし

正常終了か異常終了かの判断は、本関数の引数*envに設定したCORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参照して行う。メンバ_majorの取り得る値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生
【説明】

サーバ側アプリケーションが関数CORBA_ORB_runを呼び出し、リクエスト受信待ちとなると関数CORBA_ORB_runはリターンしない。

しかし、サーバ側アプリケーションに登録されたサーバントの関数内で、本関数を呼び出された場合、関数CORBA_ORB_runからリターンすることが可能となる。




4.1.3 CORBA Object

【機能】
CORBAオブジェクトの解放
【形式】
void
CORBA_Object_release(CORBA_Object obj, CORBA_Environment *env);
【引数(パラメータ)】
CORBA_Object obj CORBAオブジェクト
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
なし

正常終了か異常終了かの判断は、本関数の引数*envに設定したCORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参照して行う。メンバ_majorの取り得る値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生
【説明】

本関数は引数objで指定されるCORBAオブジェクトを解放する。




4.1.4 POA

【機能】
POAの作成
【形式】
void
PortableServer_POA_create_POA(
     PortableServer_POA poa,
     CORBA_char *adapter_name,
     PortableServer_POAManager mgr,
     CORBA_PolicyList *policies,
     CORBA_Environment *env
);
【引数(パラメータ)】
PortableServer_POA poa 作成するPOAの親POA
CORBA_char *adapter_name 作成するPOAの名前
PortableServer_POAManager mgr 作成するPOAのPOAManager (NULLを指定すると、POAManagerが作成される)
CORBA_PolicyList *policies 作成されるPOAのポリシーリスト
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
なし

正常終了か異常終了かの判断は、本関数の引数*envに設定したCORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参照して行う。メンバ_majorの取り得る値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生
【説明】

POAを作成する。

この関数インタフェースは、すでに関数 CORBA_ORB_resolve_initial_referencesで作成済みの親POAに対して、子POAを 作成する場合に使う。

引数adapter_nameがPOAにすでに登録済みのものと一致した場合、登録されず に引数*envに例外を設定する。

引数mgrがNULLの場合は、引数poaを管理するためのPOAManagerが作成される。 作成されたPOAManagerを取り出し使用する場合は、後述する関数 PortableServer_POA__get_the_POAManagerを使用する。また、mgrが以前作成 されたPOAのPOAManagerである場合は、そのPOAManagerの管理リストにPOAが設 定される。

引数polieseは、ポリシーを設定しない場合はNULLを設定し、永続化ポリシー となるPOAを作成するときは、LifespanPolicyをセットしたポリシーリストを 設定する。





【機能】
POAを削除する
【形式】
void
PortableServer_POA_destroy(PortableServer_POA poa, CORBA_boolean etherealize_objects, CORBA_boolean wait_for_completion, CORBA_Environment *env);
【引数(パラメータ)】
PortableServer_POA poa 削除するPOA
CORBA_boolean etherealize_objects サーバントマネージャによってオブジェクトの状態を保持するか否かフラグ
CORBA_boolean wait_for_completion すべてのリクエストの起動が終わるまで待つかのフラグ
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
なし

正常終了か異常終了かの判断は、本関数の引数*envに設定したCORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参照して行う。メンバ_majorの取り得る値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生
【説明】

POAを削除する。

引数etherealize_objectsは、CORBA関連機能がサーバントマネージャをサポートしないので無視される。また、引数wait_for_completionもCORBA関連機能では無視される。

本関数は、関数CORBA_ORB_resolve_initial_referencesと、関数PortableServer_POA_create_POAによって作成されたPOAを削除する。

関数CORBA_ORB_resolve_initial_referencesや、関数PortableServer_POA_create_POAによって作成されたPOAが不要となった場合、本関数を使って削除する必要がある。





【機能】
POA名の獲得
【形式】
CORBA_char *
PortableServer_POA__get_the_name(PortableServer_POA poa, CORBA_Environment *env);
【引数(パラメータ)】
PortableServer_POA poa 名前を得るPOA
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
引数poaで与えられたPOAの名前

正常終了か異常終了かの判断は、本関数の引数*envに設定したCORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参照して行う。メンバ_majorの取り得る値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生
【説明】

POAの名前を得る。

ここでは、関数PortableServer_POA_create_POAの引数*adapter_nameに設定されたPOAの名前が返される。関数CORBA_ORB_resolve_initial_referencesで作成されたRootPOAの場合は、"RootPOA"が返される。





【機能】
親POAの獲得
【形式】
POA
PortableServer_POA__get_the_parent(PortableServer_POA poa, CORBA_environment *env);
【引数(パラメータ)】
PortableServer_POA poa 親POAを得るPOA
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
引数poaで与えられたPOAの親POA

正常終了か異常終了かの判断は、本関数の引数*envに設定したCORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参照して行う。メンバ_majorの取り得る値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生
【説明】

引数poaで与えられたPOAの親POAを得る。

関数PortableServer_POA_create_POAの引数poaで設定された親POAが返される。関数CORBA_ORB_resolve_initial_referencesで作成されたRootPOAの場合は、親POAは存在しないのでNULLが返される。





【機能】
POAManagerの獲得
【形式】
POA
PortableServer_POA__get_the_POAManager(PortableServer_POA poa, CORBA_environment *env);
【引数(パラメータ)】
PortableServer_POA poa POAManagerに管理されているPOA
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
引数poaで与えられたPOAのPOAManager

正常終了か異常終了かの判断は、本関数の引数*envに設定したCORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参照して行う。メンバ_majorの取り得る値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生
【説明】

引数poaで指定されるPOAを管理しているPOAManaegerを返す。

関数PortableServer_POA_create_POAの引数mgrに設定されたPOAManagerが返される。関数PortableServer_POA_create_POAの引数mgrがNULLに設定されている場合は、関数PortableServer_POA_create_POAで作成されたPOAManagerが返される。

関数CORBA_ORB_resolve_initial_referencesで作成されたRootPOAの場合は、関数CORBA_ORB_resolve_initial_referencesで作成されたPOAManagerが返される。





【機能】
POAの永続化ポリシーの作成
【形式】
LifespanPolicy
create_lifespan_policy(PortableServer_POA poa, LifespanPolicyValue value, CORBA_Environment *env);
【引数(パラメータ)】
PortableServer_POA poa ポリシーの設定を行うPOA
LifespanPolicyValue value 永続化ポリシーの値
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
設定された永続化ポリシー

正常終了か異常終了かの判断は、本関数の引数*envに設定したCORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参照して行う。メンバ_majorの取り得る値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生
【説明】

POAの永続化ポリシーを作成する。

POAの永続化ポリシーには、揮発性のPOAと、永続化されたPOAの2種類がある。揮発性のPOAによって作成されたサーバントは、アプリケーションタスクが終了すると、再度作成することは不可能である。また、永続化されたPOAによって作成されたサーバントは、アプリケーションタスクの生存期間に関わらず永続化されている。

設定可能な永続化ポリシーは以下の通りである。

PortableServer_TRANSIENT揮発性のPOA
PortableServer_PERSISTENT永続化されたPOA




【機能】
POAにサーバントを登録する
【形式】
void
PortableServer_POA_activate_object_with_id(PortableServer_POA poa, PortableServer_ObjectId oid, PortableServer_Servantp_servant, CORBA_Environment *env);
【引数(パラメータ)】
PortableServer_POA poa 登録先であるPOA
PortableServer_ObjectId oid 新しいオブジェクトのオブジェクトID
PortableServer_Servant p_servant 登録するサーバント
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
なし

正常終了か異常終了かの判断は、本関数の引数*envに設定したCORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参照して行う。メンバ_majorの取り得る値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生
【説明】

POAにオブジェクトID(引数oid)を識別子としてサーバントを登録する。

サーバプログラムは本関数を用いて、POAに実装オブジェクト(サーバント)を登録する。登録されたサーバントは、引数oidで指定されたオブジェクトIDによって識別される。

本関数によって登録されたサーバントは、サーバントとオブジェクトIDとを対にしたテーブルによって管理される。このメモリ領域はサーバントが削除されるまで、POAによって保持される。よって、登録されたサーバントが不要となった場合は、関数PortableServer_POA_deactivate_object_with_idを使って削除する必要がある。





【機能】
POAからサーバントを削除
【形式】
void
PortableServer_POA_deactivate_object_with_id(PortableServer_POA poa, PortableServer_ObjectId oid, CORBA_Environment *env);
【引数(パラメータ)】
PortableServer_POA poa サーバントを管理しているPOA
PortableServer_ObjectId oid 削除するオブジェクトのオブジェクトID
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
なし

正常終了か異常終了かの判断は、本関数の引数*envに設定したCORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参照して行う。メンバ_majorの取り得る値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生
【説明】

POAに登録されているサーバントを削除する。

削除時には、引数oidで指定されたオブジェクトIDで検索を行い、オブジェクトIDが一致するサーバントを削除する。ただし、このオブジェクトIDは、登録時に用いられたものである。





【機能】
サーバントからCORBAオブジェクト獲得
【形式】
PortableServer_Object
PortableServer_POA_servant_to_reference(PortableServer_POA poa, PortableServer_Servant p_servant, CORBA_Environment *env);
【引数(パラメータ)】
PortableServer_POA poa サーバントを管理しているPOA
PortableServer_Servant p_servant CORBAオブジェクトを得るサーバント
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
引数p_servantと一致するCORBAオブジェクト

正常終了か異常終了かの判断は、本関数の引数*envに設定したCORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参照して行う。メンバ_majorの取り得る値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生
【説明】

サーバントからCORBAオブジェクトを得る。

POAのアクティブオブジェクトマップからサーバントをキーにしてオブジェクトIDを検索する。その時に一致したオブジェクトIDより、CORBAオブジェクトを生成し返り値とする。

本関数内では、CORBAオブジェクトのメモリ領域の取得を行う。よって、返り値であるCORBAオブジェクトが不要になった場合は、関数CORBA_Object_releaseを使ってそのメモリ領域を解放する必要がある。





【機能】
POAManagerの活性化
【形式】
void
PortableServer_POAManager_activate(PortableServer_POAManager mgr, CORBA_Environment *env);
【引数(パラメータ)】
PortableServer_POAmanager mgr 活性化を行うPOAManager
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
なし

正常終了か異常終了かの判断は、本関数の引数*envに設定したCORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参照して行う。メンバ_majorの取り得る値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生
【説明】

POAManagerを活性化する。

引数mgrに指定されたPOAManagerに属するPOAを活性化し、POAがメッセージを受信可能な状態とする。




4.1.5 exception

【機能】
環境変数の初期化
【形式】
void
CORBA_exception_init(CORBA_Environment *env);
【引数(パラメータ)】
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
なし
【説明】

環境変数を初期化する。

環境変数を使用する前に、アプリケーション内で本関数を呼び出す必要がある。





【機能】
環境変数への例外情報設定
【形式】
void
CORBA_exception_set(CORBA_Environment *env, CORBA_exception_type major, CORBA_char *exception_repos_id, void *param);
【引数(パラメータ)】
CORBA_Environment *env 環境変数へのポインタ
CORBA_exception_type major メジャー番号
CORBA_char *param 例外識別子へのポインタ
void *env 追加例外情報へのポインタ
【戻り値(リターンパラメータ)】
なし
【説明】

引数*envに、引数major、引数*exception_repos_idおよび引数*paramを設定する。

引数majorに設定できる値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生

引数*exception_repos_idに設定できる値は、例外種別を特定する文字列となる。引数majorにCORBA_SYSTEM_EXCEPTIONと指定した場合は、CORBAの仕様で規定されているシステム例外の種別を示す文字列を指定する。引数majorにCORBA_USER_EXCEPTIONと指定した場合は、ユーザが定義した例外の種別を示す文字列を指定する。

引数*paramへは、追加例外情報があれば、その情報へのポインタを設定する。なければ0を設定する。

本関数は、引数*envへ例外情報を設定する場合、メモリ領域の獲得を行う。よって、例外情報が不要となった場合、獲得したメモリ領域を解放するため関数CORBA_exception_freeを呼び出す必要がある。





【機能】
例外識別子の獲得
【形式】
CORBA_char *
CORBA_exception_id(CORBA_Environment *env);
【引数(パラメータ)】
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
例外識別子となる文字列へのポインタ
【説明】

引数*envに設定されている例外識別子へのポインタを戻り値に設定する。

CORBA_Environment型データへのポインタである引数*envのメンバ_majorが、CORBA_USER_EXCEPTIONまたはCORBA_SYSTEM_EXCEPTIONである場合、本関数を呼び出すことによって、例外種別情報となる例外識別子を獲得することができる。





【機能】
追加例外情報の獲得
【形式】
void *
CORBA_exception_value(CORBA_Environment *env);
【引数(パラメータ)】
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
追加例外情報へのポインタ
【説明】

引数*envに設定されている追加例外情報へのポインタを戻り値に設定する。

CORBA_Environment型データへのポインタである引数*envのメンバ_majorが、CORBA_USER_EXCEPTIONまたはCORBA_SYSTEM_EXCEPTIONである場合、本関数を呼び出すことによって、追加例外情報を獲得することができる。





【機能】
例外情報メモリ領域解放
【形式】
void
CORBA_exception_free(CORBA_Environment *env);
【引数(パラメータ)】
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
なし
【説明】

引数*envに設定されている例外情報を格納しているメモリ領域の解放を行う。




4.1.6 memory

【機能】
メモリの獲得
【形式】
void *
CORBA_malloc(CORBA_unsigned_long size, CORBA_unsigned_long count, f_func func);
【引数(パラメータ)】
CORBA_unsigned_long size メモリサイズ
CORBA_unsigned_long len 獲得メモリ数
f_func func メモリ開放関数へのポインタ
【戻り値(リターンパラメータ)】
獲得メモリの先頭アドレス
【説明】

必要なサイズ(引数size * 引数len)のメモリ領域を獲得する。この時、獲得したメモリ情報を格納するための領域(32バイト)も消費する。

本関数で獲得したメモリ領域は、関数CORBA_freeで解放しなければならない。

獲得したメモリが配列として使用され、個々の配列の要素が、さらに動的に獲得したメモリのポインタを持ち、その動的に獲得したメモリを開放するための関数が用意されている場合、引数funcにそのメモリ開放関数へのポインタを設定することが可能である。

さらに配列の要素数を引数countに設定する。引数countおよびfuncは関数CORBA_freeを呼び出された時に使用される。





【機能】
メモリの解放
【形式】
void
CORBA_free(void *bufp);
【引数(パラメータ)】
void *bufp 解放するメモリ領域へのポインタ
【戻り値(リターンパラメータ)】
なし
【説明】

引数bufpで指定されたメモリ領域の解放を行う。

引数bufpで示される領域のメモリ解放関数が設定されていれば、そのメモリ開放関数を呼び出してメモリの開放を行う。




4.1.7 stub skelton

【機能】
送信バッファ内インデックス獲得関数
【形式】
CORBA_unsigned_long
MRSHL_index_octet(CORBA_unsigned_long index);
CORBA_unsigned_long
MRSHL_index_boolean(CORBA_unsigned_long index);
CORBA_unsigned_long
MRSHL_index_char(CORBA_unsigned_long index);
CORBA_unsigned_long
MRSHL_index_short(CORBA_unsigned_long index);
CORBA_unsigned_long
MRSHL_index_unsigned_short(CORBA_unsigned_long index);
CORBA_unsigned_long
MRSHL_index_long(CORBA_unsigned_long index);
CORBA_unsigned_long
MRSHL_index_unsigned_long(CORBA_unsigned_long index);
CORBA_unsigned_long
MRSHL_index_long_long(CORBA_unsigned_long index);
CORBA_unsigned_long
MRSHL_index_unsigned_long_long(CORBA_unsigned_long index);
CORBA_unsigned_long
MRSHL_index_float(CORBA_unsigned_long index);
CORBA_unsigned_long
MRSHL_index_double(CORBA_unsigned_long index);
CORBA_unsigned_long
MRSHL_index_string(CORBA_unsigned_long index, CORBA_char *str);
【引数(パラメータ)】
CORBA_unsigned_long index マーシャリング開始時の送信バッファ内インデック
CORBA_char *str 文字列へのポインタ 関数MRSHL_index_stringのみ必要
【戻り値(リターンパラメータ)】
マーシャリング後の送信バッファ内インデックス
【説明】

送信バッファ内インデックスとは、マーシャリング後の送信バッファの先頭からのオフセット値である。送信バッファの先頭のインデックス値は0である。

本関数はマーシャリングを行わず、インデックスのみ求める。マーシャリング対象となるデータ型により【形式】に示す関数を使い分ける必要がある。

現在のバッファ内インデックス値である引数indexからCORBA_octet型データ格納後のインデックス値を求める。

求めたインデックス値が、マーシャリング時に必要とされるメモリサイズとなる。

また、文字列型データのマーシャリング後の送信バッファ内インデックスを求める場合のみ、引数str(文字列へのポインタ)が必要となる。

CORBAオペレーションが、long型とshort型の2つの引数をとる場合、以下の様にしてバッファ内インデックス(マーシャリング時に必要とされるメモリサイズ)を求める。

  CORBA_unsigned_long     index;

  index = 0;
  index = MRSHL_index_long(index);
  index = MRSHL_index_short(index);




【機能】
マーシャリング関数
【形式】
void
MRSHL_put_octet(CORBA_char **bufp, CORBA_octet data);
void
MRSHL_put_boolean(CORBA_char **bufp, CORBA_boolean data);
void
MRSHL_put_char(CORBA_char **bufp, CORBA_char data);
void
MRSHL_put_short(CORBA_char **bufp, CORBA_short data);
void
MRSHL_put_unsigned_short(CORBA_char **bufp, CORBA_unsigned_short data);
void
MRSHL_put_long(CORBA_char **bufp, CORBA_long data);
void
MRSHL_put_unsigned_long(CORBA_char **bufp, CORBA_unsigned_long data);
void
MRSHL_put_long_long(CORBA_char **bufp, CORBA_long_long data);
void
MRSHL_put_unsigned_long_long(CORBA_char **bufp,CORBA_unsigned_long_long data);
void
MRSHL_put_float(CORBA_char **bufp, CORBA_float data);
void
MRSHL_put_double(CORBA_char **bufp, CORBA_double data);
void
MRSHL_put_string(CORBA_char **bufp, CORBA_char *data);
【引数(パラメータ)】
CORBA_char **bufp 送信バッファアドレスの格納領域へのポインタ
マーシャリング対象データ型 data マーシャリング対象データ文字列のマーシャリング時は文字列へのポインタとなる
【戻り値(リターンパラメータ)】
なし
【説明】

マーシャリング対象となるデータ型により【形式】に示す関数を使い分ける必要がある。

格納後、送信バッファ内のアドレスは、引数**bufpに「送信バッファ内インデックス獲得関数」で得られたインデックスの値を加えたものである。

CORBAオペレーションが、long型データとshort型データの2つの引数をとる場合、以下の様にして送信バッファへマーシャリングする。

  CORBA_long      ldata;
  CORBA_short     sdata;
  CORBA_char      *bufp;

  MRSHL_put_long(&bufp, ldata);
  MRSHL_put_short(&bufp, sdata);




【機能】
アンマーシャリング関数
【形式】
CORBA_octet
MRSHL_get_octet(CORBA_char **bufp);
CORBA_boolean
MRSHL_get_boolean(CORBA_char **bufp, CORBA_boolean order);
CORBA_char
MRSHL_get_char(CORBA_char **bufp, CORBA_boolean order);
CORBA_short
MRSHL_get_short(CORBA_char **bufp, CORBA_boolean order);
CORBA_unsigned_short
MRSHL_get_unsigned_short(CORBA_char **bufp, CORBA_boolean order);
CORBA_long
MRSHL_get_long(CORBA_char **bufp, CORBA_boolean order);
CORBA_unsigned_long
MRSHL_get_unsigned_long(CORBA_char **bufp, CORBA_boolean order);
CORBA_long_long
MRSHL_get_long_long(CORBA_char **bufp, CORBA_boolean order);
CORBA_unsigned_long_long
MRSHL_get_unsigned_long_long(CORBA_char **bufp, CORBA_boolean order);
CORBA_float
MRSHL_get_float(CORBA_char **bufp, CORBA_boolean order);
CORBA_double
MRSHL_get_double(CORBA_char **bufp, CORBA_boolean order);
CORBA_char *
MRSHL_get_string(CORBA_char **bufp, CORBA_boolean order);
【引数(パラメータ)】
CORBA_char **bufp 受信バッファアドレスの格納領域へのポインタ
CORBA_boolean order 受信バッファ内データのバイトオーダ
CORBA_TRUEリトルエンディアン
CORBA_FALSEビッグエンディアン
【戻り値(リターンパラメータ)】
アンマーシャリング後のデータ

文字列の場合は、文字列へのポインタとなる。

【説明】

アンマーシャリング対象となるデータ型により【形式】に示す関数を使い分ける必要がある。

引数**bufpが示す領域に格納されているデータを取り出し、戻り値に設定する。この時、引数orderがネイティブバイトオーダと異なれば、ネイティブバイトオーダに変換した値を戻り値に設定する。

データの取り出し後、バッファ内のアドレスは、引数**bufpに「送信バッファ内インデックス獲得関数」で得られたインデックスの値と同じ値を加えたものである。設定する。

アンマーシャリングの対象となるデータが文字列の場合、文字列を格納するためのメモリ領域を獲得し、その領域に文字列を格納する。そして、その領域の先頭アドレスを戻り値に設定する。メモリ獲得に失敗した場合は、戻り値として0を設定する。

獲得したメモリ領域は、関数CORBA_freeで解放可能である。

CORBAオペレーションがlong型データとshort型データの2つの引数をとる場合、以下のようにして受信バッファからデータを取り出す。

  CORBA_long      ldata;
  CORBA_short     sdata;
  CORBA_char      *bufp;
  CORBA_boolean   order;

  ldata = MRSHL_get_long(&bufp, order);
  sdata = MRSHL_get_short(&bufp, order);




【機能】
クライアント側送受信初期化
【形式】
void
GIOP_init_cli(GIOP_CliInf *inf);
【引数(パラメータ)】
GIOP_CliInf *inf クライアント側GIOP管理データへのポインタ
【戻り値(リターンパラメータ)】
なし
【説明】

引数*infで示される情報に初期値を設定する。スタブ関数内の最初の処理で本関数を必ず呼び出す必要がある。





【機能】
クライアント側送受信終了
【形式】
void
GIOP_end_cli(GIOP_CliInf *inf);
【引数(パラメータ)】
GIOP_CliInf *inf クライアント側GIOP管理データへのポインタ
【戻り値(リターンパラメータ)】
なし
【説明】

引数*infで示される情報についての終了処理を行う。具体的には送信および受信時に使用されたメモリの解放を行う。

スタブ関数内からリターンする場合は、本関数を必ず呼び出す必要がある。





【機能】
リクエスト用送信バッファの作成
【形式】
CORBA_char *
GIOP_create_reqbuf(CORBA_Object obj, GIOP_CliInf *inf, CORBA_unsigned_long dsize, CORBA_boolean akflg, CORBA_char *op, CORBA_Environment *env);
【引数(パラメータ)】
CORBA_Object obj CORBAオブジェクト
GIOP_CliInf *inf クライアント側GIOP管理データへのポインタ
CORBA_unsigned_long dsize オペレーション引数サイズ
CORBA_boolean < akflg/td> リプライ待ちフラグ CORBA_TRUEで固定
CORBA_char *op オペレーション名へのポインタ
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
正常終了送信バッファ内アドレス
異常終了0

正常終了および異常終了の判断は、本関数の引数*envに設定したCORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参照して行う。メンバ_majorの取り得る値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生
【説明】

送信バッファは、リクエストヘッダサイズとオペレーションの引数のサイズ(引数dsize)を合計したメモリサイズ分だけ獲得される。

獲得した送信バッファに、リプライ待ちフラグ(引数akflg)およびオペレーション名(引数*op)を含むリクエストヘッダを格納する。

本関数の戻り値には、送信バッファ内のリクエストヘッダ領域のボトムアドレスを設定する。

つまり、スタブ内でオペレーションの引数となるデータを、本関数の戻り値のアドレスに、先頭からマーシャリング関数を用いて格納している。





【機能】
リクエスト送受信
【形式】
CORBA_char *
GIOP_invoke_req(CORBA_Object obj, GIOP_CliInf *inf, CORBA_unsigned_long size, CORBA_Environment *env);
【引数(パラメータ)】
CORBA_Object obj CORBAオブジェクト
GIOP_CliInf *inf クライアント側GIOP管理データへのポインタ
CORBA_unsigned_long size 送信バッファサイズ
CORBA_Environment *env 環境変数へのポインタ
【戻り値(リターンパラメータ)】
正常終了受信バッファ内アドレス
異常終了0

正常終了および異常終了の判断は、本関数の引数*envに設定したCORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参照して行う。メンバ_majorの取り得る値は以下の通り。

CORBA_NO_EXCEPTION 例外発生なし
CORBA_USER_EXCEPTION ユーザ定義例外発生
CORBA_SYSTEM_EXCEPTION システム例外発生
【説明】

サーバにリクエストの送信を行い、リプライを受信する。

リクエスト送信時は、引数sizeが示すバイトサイズ分のデータ(引数*infで管理されているバッファ内データ)をサーバへ送信する。リプライ受信時に受信バッファ領域の獲得を行い、受信データを格納する。

本関数の戻り値には、受信バッファへのポインタを設定する。

つまり、スタブ内でオペレーションの戻り値となるデータを、本関数の戻り値であるアドレスに、先頭からアンマーシャリング関数を用いて格納している。





【機能】
リプライ用送信バッファの作成
【形式】
CORBA_char *
GIOP_create_repbuf(GIOP_SrvInf *inf, CORBA_unsigned_long dsize);
【引数(パラメータ)】
GIOP_SrvInf *inf サーバ側GIOP管理データへのポインタ
CORBA_unsigned_long dsize オペレーション戻り値サイズ
【戻り値(リターンパラメータ)】
正常終了送信バッファ内アドレス
異常終了0
【説明】

送信バッファは、リプライヘッダサイズとオペレーションの戻り値のサイズ( 引数dsize)を合計したメモリサイズ分だけ獲得される。送信バッファは、サー バ側GIOP管理データ(引数*inf)で管理される。

獲得した送信バッファにリプライヘッダを格納する。本関数の戻り値には、送 信バッファ内のリプライヘッダ領域のボトムアドレスを設定する。

つまり、スケルトン内でオペレーションの戻り値となるデータを、本関数の戻り値のアドレスに、先頭からマーシャリング関数を用いて格納している。





【機能】
リプライ送信
【形式】
void
GIOP_send_rep(GIOP_SrvInf *inf, CORBA_unsigned_long size);
【引数(パラメータ)】
GIOP_SrvInf *inf サーバ側GIOP管理データへのポインタ
CORBA_unsigned_long size 送信バッファサイズ
【戻り値(リターンパラメータ)】
なし
【説明】

リプライ送信を行う。

引数*infで管理されているバッファ内データを引数sizeが示すバイトサイズ分 だけクライアントに送信する。





【機能】
システム例外のリプライ送信
【形式】
void
GIOP_send_repexc(GIOP_SrvInf *inf, CORBA_char *id, CORBA_unsigned_long completed);
【引数(パラメータ)】
GIOP_SrvInf *inf サーバ側GIOP管理データへのポインタ
CORBA_char *id 例外ID(文字列へのポインタ)
CORBA_unsigned_long completed オペレーション呼び出し有無フラグ
CORBA_COMPLETED_YESオペレーションは呼び出された
CORBA_COMPLETED_NOオペレーションは呼び出されていない
CORBA_COMPLETED_MAYBEオペレーションは呼び出されたかもしれない
【戻り値(リターンパラメータ)】
なし
【説明】

本関数は、スケルトンから呼び出される。

オペレーション処理中、またはスケルトン内でシステム例外が発生した場合、本関数を使用してクライアントにシステム例外が発生したことを通知する。

引数*idでシステム例外の種別を指定し、引数completedでオペレーションの呼び出しの有無を指定する。本関数は、指定された情報がシステム例外情報としてクライアントに送信する。




4.1.8 dynamic entry

【機能】
動的オブジェクト登録
【形式】
CORBA_int
ASRV_entry_dobj(T_CTSK *tskinf, CORBA_char *srvnm, CORBA_int vers);
【引数(パラメータ)】
T_CTSK *tskinf サーバタスク生成情報へのポインタ
CORBA_char *srvnm サーバ名へのポインタ
CORBA_int vers バージョン番号
【戻り値(リターンパラメータ)】
正常終了動的オブジェクト識別子(正の整数)
異常終了負の整数
【説明】

本関数によって、すでに稼働しているCORBA関連機能を用いたシステムに、サーバ側オブジェクトとなるサーバタスクが登録される。

CORBA関連機能が管理しているサーバタスクのサーバタスク生成情報(引数*tskinf)、サーバ名(引数*srvnm)およびバージョン番号(引数vers)を本関数の引数に指定する。

サーバタスクが正常に登録された場合、そのサーバを一意に識別可能な動的オブジェクト識別子(正の整数)が戻り値となる。

すでに同じサーバ名で登録されている場合、または登録に必要なメモリ領域が獲得できない場合は、登録処理は行わず、負の整数が戻り値となる。

本関数で登録されたサーバは、クライアントからのリクエストを受信した際に初めて起動する。よって、クライアントはサーバのロケーション情報を含むIORを、サーバが起動する前に用意しておく必要がある。

このIORは、IOR作成コマンドcre_iorにより取得可能である。

また、本関数により登録されるオブジェクトは、永続化オブジェクトとして実装されなければならない。





【機能】
動的オブジェクト削除
【形式】
ID
ASRV_cancel_dobj_id(CORBA_int doid);
【引数(パラメータ)】
CORBA_int doid 動的オブジェクト識別子
【戻り値(リターンパラメータ)】
削除の対象となるサーバタスクID
【説明】

本関数は、関数ASRV_entry_dobjによって登録されたサーバタスクのサービス停止と削除を行う。

削除対象となるサーバタスクの動的オブジェクト識別子を本関数の引数doidに指定し、本関数内で削除処理を行い、削除対象となるサーバタスクのタスクIDを戻り値に設定しリターンする。

本関数が呼び出された時点で削除対象となるサーバタスクが、クライアントからのリクエストを処理している場合、その処理が終了した時点で削除される。

よって、本関数がリターンした時点ではサーバタスクが動作しており、削除されていない場合も考えられる。




4.2 IOR作成コマンド

稼働中のシステムに、CORBA関連機能を用いて動的に登録されたサーバ側オブジェクト(サーバタスク)のロケーション情報を含むIORは、コマンドcre_iorにより作成する。なお、システム初期化時に静的に生成されるサーバ側オブジェクト(サーバタスク)のIORは本コマンドでは生成できない。

【形式】
cre_ior <host> <port> <server> <idl> <poa> <object>
【引数(パラメータ)】
<host> サーバ側マシンのホスト名
<port> サーバ側マシンで動作している自動起動サーバのポート番号
<server> 登録されたオブジェクト(サーバタスク)のサーバ名
<idl> サーバントのIDL定義
<poa> サーバントが存在するPOAの階層情報
<object> サーバントのオブジェクトID
【説明】

稼働中のシステムに、CORBA関連機能を用いて動的に登録されたサーバ側オブジェクト(サーバタスク)と同じ設定内容を本コマンドの【引数】に設定する。

本コマンドで得られたIORを引数として、関数CORBA_ORB_string_to_objectを呼び出すことにより、動的に登録されたサーバ側オブジェクトのCORBAオブジェクトが獲得可能である。

クライアント側アプリケーションは、獲得したCORBAオブジェクトを用いてリクエストの送信が可能となる。

【例】
cre_ior rtpgw5 5000 test-srv IDL:TestModule/TestIF RootPOA/test_poa test_object

目次にもどる3章へ5章へ