Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス C言語編


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_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関数がリターンしないままプロセスが終了します。

  1. OpenTP1の強制停止コマンド(dcstop -fコマンド)や,サーバの強制停止コマンド(dcsvstop -fコマンド)を実行したために,SPPが終了処理に入ったとき

  2. UAPまたはOpenTP1の不良が原因でプロセスが異常終了したとき

  3. サービス関数からabortやexitが実行されたとき

  4. ハードウェアやオペレーティングシステム,またはOpenTP1そのものが障害になったとき

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