CORBA関連機能を用いたアプリケーション作成に必要な関数のインターフェース仕様を説明する。
CORBA関連機能を用いたアプリケーションは、「4.1.1 リソース設定」以降に説明する関数の組合せにより実現可能である。
関数の組合せ方は、以下に示すディレクトリに存在するサンプルプログラムを参照。
corbaapl/sample/long/src (long型の引数、 戻り値をもつCORBAオペレーションサンプルプログラム)
corbaapl/sample/dync/src (動的登録サンプルプログラム)
【機能】 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
組込みCORBAリソース設定 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
【形式】 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CORBA_int ECORBA_init(SG_CORBA *corba_sg) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
【引数(パラメータ)】 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
【戻り値(リターンパラメータ)】 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
【説明】 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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型データの構成要素は以下の通り。
|
【機能】 | ||||||||||
ORB初期化 | ||||||||||
【形式】 | ||||||||||
CORBA_ORB CORBA_ORB_init(int *argc, char **argv, CORBA_ORBid orb_identifier,CORBA_Environment *env); |
||||||||||
【引数(パラメータ)】 | ||||||||||
|
||||||||||
【戻り値(リターンパラメータ)】 | ||||||||||
|
||||||||||
【説明】 | ||||||||||
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) |
||||||||||
【引数(パラメータ)】 | ||||||||||
|
||||||||||
【戻り値(リターンパラメータ)】 | ||||||||||
|
||||||||||
【説明】 | ||||||||||
引数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); |
||||||||||
【引数(パラメータ)】 | ||||||||||
|
||||||||||
【戻り値(リターンパラメータ)】 | ||||||||||
|
||||||||||
【説明】 | ||||||||||
本関数は、引数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); |
||||||||||
【引数(パラメータ)】 | ||||||||||
|
||||||||||
【戻り値(リターンパラメータ)】 | ||||||||||
|
||||||||||
【説明】 | ||||||||||
引数*bufに指定された文字列(IOR形式)をCORBAオブジェクトに変換する。 クライアント側のアプリケーションは、本関数で得られたCORBAオブジェクトを使用してオペレーションを呼び出す。 本関数の引数orbは、関数CORBA_ORB_initで獲得したORBオブジェクトを指定する。 戻り値となるCORBAオブジェクトは、本関数内で獲得したメモリ領域を使用している。よって、CORBAオブジェクトが不要となった場合、関数CORBA_Object_releaseを用いてメモリ領域を解放する必要がある。 |
【機能】 | |||||||
リクエスト受信待ち | |||||||
【形式】 | |||||||
void CORBA_ORB_run(CORBA_ORB orb, CORBA_Environment *env); |
|||||||
【引数(パラメータ)】 | |||||||
|
|||||||
【戻り値(リターンパラメータ)】 | |||||||
|
|||||||
【説明】 | |||||||
サーバ側のオブジェクトは、本関数を呼び出し、クライアントからのリクエスト受信待ちループに入る。 本関数の引数orbは、関数CORBA_ORB_initで獲得したORBオブジェクトを指定する。 クライアントからのリクエストを受信した場合、適切なサーバントを呼び出す。 |
【機能】 | |||||||
サーバ終了設定 | |||||||
【形式】 | |||||||
void CORBA_ORB_shutdown(CORBA_ORB orb, CORBA_Environment *env); |
|||||||
【引数(パラメータ)】 | |||||||
|
|||||||
【戻り値(リターンパラメータ)】 | |||||||
|
|||||||
【説明】 | |||||||
サーバ側アプリケーションが関数CORBA_ORB_runを呼び出し、リクエスト受信待ちとなると関数CORBA_ORB_runはリターンしない。 しかし、サーバ側アプリケーションに登録されたサーバントの関数内で、本関数を呼び出された場合、関数CORBA_ORB_runからリターンすることが可能となる。 |
【機能】 | |||||||
CORBAオブジェクトの解放 | |||||||
【形式】 | |||||||
void CORBA_Object_release(CORBA_Object obj, CORBA_Environment *env); |
|||||||
【引数(パラメータ)】 | |||||||
|
|||||||
【戻り値(リターンパラメータ)】 | |||||||
|
|||||||
【説明】 | |||||||
本関数は引数objで指定されるCORBAオブジェクトを解放する。 |
【機能】 | ||||||||||
POAの作成 | ||||||||||
【形式】 | ||||||||||
void PortableServer_POA_create_POA( PortableServer_POA poa, CORBA_char *adapter_name, PortableServer_POAManager mgr, CORBA_PolicyList *policies, CORBA_Environment *env ); |
||||||||||
【引数(パラメータ)】 | ||||||||||
|
||||||||||
【戻り値(リターンパラメータ)】 | ||||||||||
|
||||||||||
【説明】 | ||||||||||
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); |
||||||||
【引数(パラメータ)】 | ||||||||
|
||||||||
【戻り値(リターンパラメータ)】 | ||||||||
|
||||||||
【説明】 | ||||||||
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); |
|||||||
【引数(パラメータ)】 | |||||||
|
|||||||
【戻り値(リターンパラメータ)】 | |||||||
|
|||||||
【説明】 | |||||||
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); |
|||||||
【引数(パラメータ)】 | |||||||
|
|||||||
【戻り値(リターンパラメータ)】 | |||||||
|
|||||||
【説明】 | |||||||
引数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); |
|||||||
【引数(パラメータ)】 | |||||||
|
|||||||
【戻り値(リターンパラメータ)】 | |||||||
|
|||||||
【説明】 | |||||||
引数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); |
|||||||
【引数(パラメータ)】 | |||||||
|
|||||||
【戻り値(リターンパラメータ)】 | |||||||
|
|||||||
【説明】 | |||||||
POAの永続化ポリシーを作成する。 POAの永続化ポリシーには、揮発性のPOAと、永続化されたPOAの2種類がある。揮発性のPOAによって作成されたサーバントは、アプリケーションタスクが終了すると、再度作成することは不可能である。また、永続化されたPOAによって作成されたサーバントは、アプリケーションタスクの生存期間に関わらず永続化されている。 設定可能な永続化ポリシーは以下の通りである。
|
【機能】 | ||||||||
POAにサーバントを登録する | ||||||||
【形式】 | ||||||||
void PortableServer_POA_activate_object_with_id(PortableServer_POA poa, PortableServer_ObjectId oid, PortableServer_Servantp_servant, CORBA_Environment *env); |
||||||||
【引数(パラメータ)】 | ||||||||
|
||||||||
【戻り値(リターンパラメータ)】 | ||||||||
|
||||||||
【説明】 | ||||||||
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); |
|||||||
【引数(パラメータ)】 | |||||||
|
|||||||
【戻り値(リターンパラメータ)】 | |||||||
|
|||||||
【説明】 | |||||||
POAに登録されているサーバントを削除する。 削除時には、引数oidで指定されたオブジェクトIDで検索を行い、オブジェクトIDが一致するサーバントを削除する。ただし、このオブジェクトIDは、登録時に用いられたものである。 |
【機能】 | |||||||
サーバントからCORBAオブジェクト獲得 | |||||||
【形式】 | |||||||
PortableServer_Object PortableServer_POA_servant_to_reference(PortableServer_POA poa, PortableServer_Servant p_servant, CORBA_Environment *env); |
|||||||
【引数(パラメータ)】 | |||||||
|
|||||||
【戻り値(リターンパラメータ)】 | |||||||
|
|||||||
【説明】 | |||||||
サーバントからCORBAオブジェクトを得る。 POAのアクティブオブジェクトマップからサーバントをキーにしてオブジェクトIDを検索する。その時に一致したオブジェクトIDより、CORBAオブジェクトを生成し返り値とする。 本関数内では、CORBAオブジェクトのメモリ領域の取得を行う。よって、返り値であるCORBAオブジェクトが不要になった場合は、関数CORBA_Object_releaseを使ってそのメモリ領域を解放する必要がある。 |
【機能】 | |||||||
POAManagerの活性化 | |||||||
【形式】 | |||||||
void PortableServer_POAManager_activate(PortableServer_POAManager mgr, CORBA_Environment *env); |
|||||||
【引数(パラメータ)】 | |||||||
|
|||||||
【戻り値(リターンパラメータ)】 | |||||||
|
|||||||
【説明】 | |||||||
POAManagerを活性化する。 引数mgrに指定されたPOAManagerに属するPOAを活性化し、POAがメッセージを受信可能な状態とする。 |
【機能】 | ||
環境変数の初期化 | ||
【形式】 | ||
void CORBA_exception_init(CORBA_Environment *env); |
||
【引数(パラメータ)】 | ||
|
||
【戻り値(リターンパラメータ)】 | ||
|
||
【説明】 | ||
環境変数を初期化する。 環境変数を使用する前に、アプリケーション内で本関数を呼び出す必要がある。 |
【機能】 | ||||||||
環境変数への例外情報設定 | ||||||||
【形式】 | ||||||||
void CORBA_exception_set(CORBA_Environment *env, CORBA_exception_type major, CORBA_char *exception_repos_id, void *param); |
||||||||
【引数(パラメータ)】 | ||||||||
|
||||||||
【戻り値(リターンパラメータ)】 | ||||||||
|
||||||||
【説明】 | ||||||||
引数*envに、引数major、引数*exception_repos_idおよび引数*paramを設定する。 引数majorに設定できる値は以下の通り。
引数*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); |
||
【引数(パラメータ)】 | ||
|
||
【戻り値(リターンパラメータ)】 | ||
|
||
【説明】 | ||
引数*envに設定されている例外識別子へのポインタを戻り値に設定する。 CORBA_Environment型データへのポインタである引数*envのメンバ_majorが、CORBA_USER_EXCEPTIONまたはCORBA_SYSTEM_EXCEPTIONである場合、本関数を呼び出すことによって、例外種別情報となる例外識別子を獲得することができる。 |
【機能】 | ||
追加例外情報の獲得 | ||
【形式】 | ||
void * CORBA_exception_value(CORBA_Environment *env); |
||
【引数(パラメータ)】 | ||
|
||
【戻り値(リターンパラメータ)】 | ||
|
||
【説明】 | ||
引数*envに設定されている追加例外情報へのポインタを戻り値に設定する。 CORBA_Environment型データへのポインタである引数*envのメンバ_majorが、CORBA_USER_EXCEPTIONまたはCORBA_SYSTEM_EXCEPTIONである場合、本関数を呼び出すことによって、追加例外情報を獲得することができる。 |
【機能】 | ||
例外情報メモリ領域解放 | ||
【形式】 | ||
void CORBA_exception_free(CORBA_Environment *env); |
||
【引数(パラメータ)】 | ||
|
||
【戻り値(リターンパラメータ)】 | ||
|
||
【説明】 | ||
引数*envに設定されている例外情報を格納しているメモリ領域の解放を行う。 |
【機能】 | ||||||
メモリの獲得 | ||||||
【形式】 | ||||||
void * CORBA_malloc(CORBA_unsigned_long size, CORBA_unsigned_long count, f_func func); |
||||||
【引数(パラメータ)】 | ||||||
|
||||||
【戻り値(リターンパラメータ)】 | ||||||
|
||||||
【説明】 | ||||||
必要なサイズ(引数size * 引数len)のメモリ領域を獲得する。この時、獲得したメモリ情報を格納するための領域(32バイト)も消費する。 本関数で獲得したメモリ領域は、関数CORBA_freeで解放しなければならない。 獲得したメモリが配列として使用され、個々の配列の要素が、さらに動的に獲得したメモリのポインタを持ち、その動的に獲得したメモリを開放するための関数が用意されている場合、引数funcにそのメモリ開放関数へのポインタを設定することが可能である。 さらに配列の要素数を引数countに設定する。引数countおよびfuncは関数CORBA_freeを呼び出された時に使用される。 |
【機能】 | ||
メモリの解放 | ||
【形式】 | ||
void CORBA_free(void *bufp); |
||
【引数(パラメータ)】 | ||
|
||
【戻り値(リターンパラメータ)】 | ||
|
||
【説明】 | ||
引数bufpで指定されたメモリ領域の解放を行う。 引数bufpで示される領域のメモリ解放関数が設定されていれば、そのメモリ開放関数を呼び出してメモリの開放を行う。 |
【機能】 | ||||||||||||
送信バッファ内インデックス獲得関数 | ||||||||||||
【形式】 | ||||||||||||
|
||||||||||||
【引数(パラメータ)】 | ||||||||||||
|
||||||||||||
【戻り値(リターンパラメータ)】 | ||||||||||||
|
||||||||||||
【説明】 | ||||||||||||
送信バッファ内インデックスとは、マーシャリング後の送信バッファの先頭からのオフセット値である。送信バッファの先頭のインデックス値は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); |
【機能】 | ||||||||||||
マーシャリング関数 | ||||||||||||
【形式】 | ||||||||||||
|
||||||||||||
【引数(パラメータ)】 | ||||||||||||
|
||||||||||||
【戻り値(リターンパラメータ)】 | ||||||||||||
|
||||||||||||
【説明】 | ||||||||||||
マーシャリング対象となるデータ型により【形式】に示す関数を使い分ける必要がある。 格納後、送信バッファ内のアドレスは、引数**bufpに「送信バッファ内インデックス獲得関数」で得られたインデックスの値を加えたものである。 CORBAオペレーションが、long型データとshort型データの2つの引数をとる場合、以下の様にして送信バッファへマーシャリングする。 CORBA_long ldata; CORBA_short sdata; CORBA_char *bufp; MRSHL_put_long(&bufp, ldata); MRSHL_put_short(&bufp, sdata); |
【機能】 | ||||||||||||
アンマーシャリング関数 | ||||||||||||
【形式】 | ||||||||||||
|
||||||||||||
【引数(パラメータ)】 | ||||||||||||
|
||||||||||||
【戻り値(リターンパラメータ)】 | ||||||||||||
|
||||||||||||
【説明】 | ||||||||||||
アンマーシャリング対象となるデータ型により【形式】に示す関数を使い分ける必要がある。 引数**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); |
||
【引数(パラメータ)】 | ||
|
||
【戻り値(リターンパラメータ)】 | ||
|
||
【説明】 | ||
引数*infで示される情報に初期値を設定する。スタブ関数内の最初の処理で本関数を必ず呼び出す必要がある。 |
【機能】 | ||
クライアント側送受信終了 | ||
【形式】 | ||
void GIOP_end_cli(GIOP_CliInf *inf); |
||
【引数(パラメータ)】 | ||
|
||
【戻り値(リターンパラメータ)】 | ||
|
||
【説明】 | ||
引数*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); |
||||||||||||
【引数(パラメータ)】 | ||||||||||||
|
||||||||||||
【戻り値(リターンパラメータ)】 | ||||||||||||
|
||||||||||||
【説明】 | ||||||||||||
送信バッファは、リクエストヘッダサイズとオペレーションの引数のサイズ(引数dsize)を合計したメモリサイズ分だけ獲得される。 獲得した送信バッファに、リプライ待ちフラグ(引数akflg)およびオペレーション名(引数*op)を含むリクエストヘッダを格納する。 本関数の戻り値には、送信バッファ内のリクエストヘッダ領域のボトムアドレスを設定する。 つまり、スタブ内でオペレーションの引数となるデータを、本関数の戻り値のアドレスに、先頭からマーシャリング関数を用いて格納している。 |
【機能】 | ||||||||||
リクエスト送受信 | ||||||||||
【形式】 | ||||||||||
CORBA_char * GIOP_invoke_req(CORBA_Object obj, GIOP_CliInf *inf, CORBA_unsigned_long size, CORBA_Environment *env); |
||||||||||
【引数(パラメータ)】 | ||||||||||
|
||||||||||
【戻り値(リターンパラメータ)】 | ||||||||||
|
||||||||||
【説明】 | ||||||||||
サーバにリクエストの送信を行い、リプライを受信する。 リクエスト送信時は、引数sizeが示すバイトサイズ分のデータ(引数*infで管理されているバッファ内データ)をサーバへ送信する。リプライ受信時に受信バッファ領域の獲得を行い、受信データを格納する。 本関数の戻り値には、受信バッファへのポインタを設定する。 つまり、スタブ内でオペレーションの戻り値となるデータを、本関数の戻り値であるアドレスに、先頭からアンマーシャリング関数を用いて格納している。 |
【機能】 | ||||
リプライ用送信バッファの作成 | ||||
【形式】 | ||||
CORBA_char * GIOP_create_repbuf(GIOP_SrvInf *inf, CORBA_unsigned_long dsize); |
||||
【引数(パラメータ)】 | ||||
|
||||
【戻り値(リターンパラメータ)】 | ||||
|
||||
【説明】 | ||||
送信バッファは、リプライヘッダサイズとオペレーションの戻り値のサイズ( 引数dsize)を合計したメモリサイズ分だけ獲得される。送信バッファは、サー バ側GIOP管理データ(引数*inf)で管理される。 獲得した送信バッファにリプライヘッダを格納する。本関数の戻り値には、送 信バッファ内のリプライヘッダ領域のボトムアドレスを設定する。 つまり、スケルトン内でオペレーションの戻り値となるデータを、本関数の戻り値のアドレスに、先頭からマーシャリング関数を用いて格納している。 |
【機能】 | ||||
リプライ送信 | ||||
【形式】 | ||||
void GIOP_send_rep(GIOP_SrvInf *inf, CORBA_unsigned_long size); |
||||
【引数(パラメータ)】 | ||||
|
||||
【戻り値(リターンパラメータ)】 | ||||
|
||||
【説明】 | ||||
リプライ送信を行う。 引数*infで管理されているバッファ内データを引数sizeが示すバイトサイズ分 だけクライアントに送信する。 |
【機能】 | ||||||||||||
システム例外のリプライ送信 | ||||||||||||
【形式】 | ||||||||||||
void GIOP_send_repexc(GIOP_SrvInf *inf, CORBA_char *id, CORBA_unsigned_long completed); |
||||||||||||
【引数(パラメータ)】 | ||||||||||||
|
||||||||||||
【戻り値(リターンパラメータ)】 | ||||||||||||
|
||||||||||||
【説明】 | ||||||||||||
本関数は、スケルトンから呼び出される。 オペレーション処理中、またはスケルトン内でシステム例外が発生した場合、本関数を使用してクライアントにシステム例外が発生したことを通知する。 引数*idでシステム例外の種別を指定し、引数completedでオペレーションの呼び出しの有無を指定する。本関数は、指定された情報がシステム例外情報としてクライアントに送信する。 |
【機能】 | ||||||
動的オブジェクト登録 | ||||||
【形式】 | ||||||
CORBA_int ASRV_entry_dobj(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); |
||
【引数(パラメータ)】 | ||
|
||
【戻り値(リターンパラメータ)】 | ||
|
||
【説明】 | ||
本関数は、関数ASRV_entry_dobjによって登録されたサーバタスクのサービス停止と削除を行う。 削除対象となるサーバタスクの動的オブジェクト識別子を本関数の引数doidに指定し、本関数内で削除処理を行い、削除対象となるサーバタスクのタスクIDを戻り値に設定しリターンする。 本関数が呼び出された時点で削除対象となるサーバタスクが、クライアントからのリクエストを処理している場合、その処理が終了した時点で削除される。 よって、本関数がリターンした時点ではサーバタスクが動作しており、削除されていない場合も考えられる。 |
稼働中のシステムに、CORBA関連機能を用いて動的に登録されたサーバ側オブジェクト(サーバタスク)のロケーション情報を含むIORは、コマンドcre_iorにより作成する。なお、システム初期化時に静的に生成されるサーバ側オブジェクト(サーバタスク)のIORは本コマンドでは生成できない。
【形式】 | ||||||||||||
cre_ior <host> <port> <server> <idl> <poa> <object> | ||||||||||||
【引数(パラメータ)】 | ||||||||||||
|
||||||||||||
【説明】 | ||||||||||||
稼働中のシステムに、CORBA関連機能を用いて動的に登録されたサーバ側オブジェクト(サーバタスク)と同じ設定内容を本コマンドの【引数】に設定する。 本コマンドで得られたIORを引数として、関数CORBA_ORB_string_to_objectを呼び出すことにより、動的に登録されたサーバ側オブジェクトのCORBAオブジェクトが獲得可能である。 クライアント側アプリケーションは、獲得したCORBAオブジェクトを用いてリクエストの送信が可能となる。 |
||||||||||||
【例】 | ||||||||||||
cre_ior rtpgw5 5000 test-srv IDL:TestModule/TestIF RootPOA/test_poa test_object |