dc_rpc_mainloop

名称

SPPのサービス開始

形式

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からの終了要求を受けるとは次のような場合です。

UAPで値を設定する引数

●flags

DCNOFLAGSを設定します。

リターン値

リターン値リターン値(数値)意味
DC_OK0OpenTP1からの終了要求を受けました。SPPはすぐに終了処理をして,dc_rpc_close関数を呼び出してexit()してください。
DCRPCER_INVALID_ARGS-301引数が間違っています。
DCRPCER_PROTO-302dc_rpc_open関数を呼び出していません。
dc_rpc_mainloop関数か,dc_mcf_mainloop関数はすでに呼び出しています。
DCRPCER_FATAL-303SPPのサービスを開始できませんでした。

注意事項

dc_rpc_mainloop関数は,OpenTP1からの終了要求を受けるとリターンします。ただし,次のような場合はdc_rpc_mainloop関数がリターンしないままプロセスが終了します。

  1. OpenTP1の強制停止コマンド(dcstop -fコマンド)や,サーバの強制停止コマンド(dcsvstop -fコマンド)を実行したために,SPPが終了処理に入ったとき
  2. UAPまたはOpenTP1の不良が原因でプロセスが異常終了したとき
  3. サービス関数からabortやexitが実行されたとき
  4. ハードウェアやオペレーティングシステム,またはOpenTP1そのものが障害になったとき

上記のような場合,dc_rpc_mainloop関数が正常に終了したあとで,終了処理をするようにSPPを作成してあっても,その処理は実行されないので注意してください。