#include <OmniRpc.h> void OmniRpcInit(int *argc, char **argv[])
OmniRPCシステムの初期化を行います。argcには、mainプログラムの argcへのポインタ、argvにはargvへのポインタを与えます。mainプログラムに おいて、引数の情報を処理する前に呼び出さなくてはなりません。 初期化では、引数において--hostfileで指定されているホストファイル、 もしくは引数で指定されていない場合には~/.omrpc-registry/hosts.xmlにある ホストファイルを読み込み、使用するホストに対し、omrpc-agentを起動し、 それぞれのホストに登録されているリモート実行プログラムに関するレジスト リ情報を読み込みます。
#include <OmniRpc.h> void OmniRpcFinalize(void);
OmniRpcシステムの終了処理を行います。全てのリモート実行プログラムを終 了させ、Agentを終了させます。
#include <OmniRpc.h> int OmniRpcCall(char *entry_name,...);
entry_nameで指定された関数を呼び出し、呼び出したスレッドは関 数が終了するまでブロックします。
ホストファイル中にあるリモートホストに 登録されているモジュールの中から関数名を検索し、適当なリモートホストに関数呼 び出しを行います。関数名が見つからない場合には、OMRPC_ERRORを返し、正 常に終了した場合にはOMRPC_OKを返します。
#include <OmniRpc.h> OmniRpcRequest OmniRpcCallAsync(char *entry_name,...);
entry_nameで指定された関数を呼び出し要求を行い、その要求に対 するデータ構造OmniRpcRequestを返します。呼び出しを行ったスレッドはブロッ クしません。関数の実行が終了したかについては、OmniRpcWait, OmniRpcProbe, OmniRpcWaitAll, OmniRpcWaitAnyの待ち合わせ関数を用いて、関数の終了を確 認もしくは待ち合わせを行うことができます。
ホストファイル中にあるリモートホストに 登録されているモジュールの中から関数名を検索し、適当なリモートホストに関数呼 び出しを行います。関数名が見つからない場合には、NULLを返します。
#include <OmniRpc.h> void OmniRpcWait(OmniRpcRequest req);
呼び出し要求reqに対応する非同期呼び出しされた関数が終了するま で、呼び出したスレッドをブロックします。
#include <OmniRpc.h> int OmniRpcProbe(OmniRpcRequest req);
呼び出し要求reqに対応する非同期呼び出しされた関数が 終了したかどうかを確認します。終了していない場合には0, 終了していた場 合には1を返します。
#include <OmniRpc.h> void OmniRpcWaitAll(int n, OmniRpcRequest reqs[]);
reqsで指定されたOmniRpcRequestの配列にあるn個の 呼び出し要求reqに対応する非同期呼び出しされた関数が、 全て終了するまで、呼び出したスレッドをブロックします。
#include <OmniRpc.h> int OmniRpcWaitAny(int n, OmniRpcRequest reqs[]);
reqsで指定されたOmniRpcRequestの配列にあるn個の 呼び出し要求reqに対応する非同期呼び出しされた関数のどれかが 終了するまで、呼び出したスレッドをブロックします。 返り値として、配列中の終了した呼び出し要求のある位置を返します。 配列中の終了した呼び出し要求のある要素はNULLになります。
#include <OmniRpc.h> OmniRpcHandle OmniRpcCreateHandle(char *host_name, char *module_name);
host_nameで指定されたリモートホストにモジュール名 module_nameで指定されたモジュールのリモート実行プログラムを起 動し、それに対するHandleを返します。これを使って、OmniRpcCallByHandleで 実行中のリモート実行プログラムの関数を呼び出すことができます。 host_nameがNULLの場合には、モジュールが登録されている適当なホ ストを選択し、モジュールのリモート実行プログラムを起動します。 ホスト名、モジュール名が不正の場合にはNULLを返します。
#include <OmniRpc.h> int OmniRpcCallByHandle(OmniRpcHandle handle,char *entry_name,...);
#include <OmniRpc.h> OmniRpcRequest OmniRpcCallAsyncByHandle(OmniRpcHandle handle,char *entry_name,...);
#include <OmniRpc.h> void OmniRpcDestroyHandle(OmniRpcHandle handle);
OmniRpcCreateHandleで作成したhandleに対応する実行中のリモート実行プロ グラムを終了します。
#include <OmniRpc.h> int OmniRpcModuleInit(char *module_name,...);
#include <OmniRpc.h> void OmniRpcExecInit(int *argc, char **argv[]);
リモート実行プログラムの直接起動のためにOmniRPCシステムの初期化を行い ます。argcには、mainプログラムのargcへのポインタ、argvにはargvへのポイ ンタを与えます。mainプログラムにおいて、引数の情報を処理する前に呼び出 さなくてはなりません。OmniRpcInitと異なり、Agentを起動しません。
コマンドの引数において、--globusを指定した場合にはGRAM, --sshを指定し た場合にはsshを用いて、リモート実行プログラムを直接起動することになり ます。defaultは、rshで起動を行います。
#include <OmniRpc.h> void OmniRpcExecFinalize(void);
OmniRpcシステムの終了処理を行います。全てのリモート実行プログラムを終 了させます。
#include <OmniRpc.h> OmniRpcExecHandle OmniRpcExecOnHost(char *host_name,char *prog_name);
host_nameで指定されたリモートホストで、リモート実行プログ ラムprog_nameで起動し、それに対するHandleを返します。 prog_nameはリモートホスト内でのパスで指定します。 これを使って、OmniRpcExecCallで実行中のリモート実行プログラムの関数を 呼び出すことができます。この関数を使う場合には、OmniRpcExecInitで初期 化しておかなくてはなりません。ホスト名、モジュール名が不正の場合には NULLを返します。
#include <OmniRpc.h> int OmniRpcExecCall(OmniRpcExecHandle handle, char *func_name, ...);
#include <OmniRpc.h> void OmniRpcExecTerminate(OmniRpcExecHandle handle);
OmniRpcExecOnHostで作成したhandleに対応する実行中のリモート実行プロ グラムを終了します。