dc_rpc_mainloop
形式
ANSI C ,C++の形式
#include <dcrpc.h> int dc_rpc_mainloop(DCLONG flags)
K&R版 C の形式
#include <dcrpc.h> int dc_rpc_mainloop(flags) DCLONG flags;
機能
このプロセスで実行中のSPPにあるサービス関数へのサービス要求を受け付けます。dc_rpc_mainloop関数は,メイン関数で呼び出します。プロセスで1回だけ呼び出してください。
dc_rpc_mainloop関数は,OpenTP1からの終了要求を受けるまでリターンしません。OpenTP1からの終了要求を受けるとは次のような場合です。
-
次に示すOpenTP1の終了コマンドを実行したために,終了処理に入ったとき
dcstopコマンド(正常終了)
dcstop -nコマンド(強制正常終了)
dcstop -aコマンド(計画停止A)
dcstop -bコマンド(計画停止B)
-
dc_rpc_mainloop関数を呼び出しているSPPのプロセスを,次に示すサーバの終了コマンドを実行したために,終了処理に入ったとき
dcsvstopコマンド(正常終了)
-
dc_rpc_mainloop関数を呼び出しているSPPのプロセスが,ユーザサービス定義の最大プロセス数の指定を超えたために,OpenTP1からプロセスを終了させられるとき
-
SPPを非常駐プロセスで実行しているときは,サービスの処理を終了したとき
-
SPPをマルチサーバで負荷分散しているときは,該当するサービスグループへのサービス要求が減少したとき
UAPで値を設定する引数
●flags
DCNOFLAGSを設定します。
リターン値
リターン値 |
リターン値(数値) |
意味 |
---|---|---|
DC_OK |
0 |
OpenTP1からの終了要求を受けました。SPPはすぐに終了処理をして,dc_rpc_close関数を呼び出してexit()してください。 |
DCRPCER_INVALID_ARGS |
-301 |
引数が間違っています。 |
DCRPCER_PROTO |
-302 |
dc_rpc_open関数を呼び出していません。 |
dc_rpc_mainloop関数か,dc_mcf_mainloop関数はすでに呼び出しています。 |
||
DCRPCER_FATAL |
-303 |
SPPのサービスを開始できませんでした。 |
注意事項
dc_rpc_mainloop関数は,OpenTP1からの終了要求を受けるとリターンします。ただし,次のような場合はdc_rpc_mainloop関数がリターンしないままプロセスが終了します。
-
OpenTP1の強制停止コマンド(dcstop -fコマンド)や,サーバの強制停止コマンド(dcsvstop -fコマンド)を実行したために,SPPが終了処理に入ったとき
-
UAPまたはOpenTP1の不良が原因でプロセスが異常終了したとき
-
サービス関数からabortやexitが実行されたとき
-
ハードウェアやオペレーティングシステム,またはOpenTP1そのものが障害になったとき
上記のような場合,dc_rpc_mainloop関数が正常に終了したあとで,終了処理をするようにSPPを作成してあっても,その処理は実行されないので注意してください。