dc_rpc_service_retry
形式
ANSI C ,C++の形式
#include <dcrpc.h> int dc_rpc_service_retry(void)
K&R版 C の形式
#include <dcrpc.h> int dc_rpc_service_retry()
機能
実行中のサービス関数の処理をリトライします。リトライする場合は,サービス関数でdc_rpc_service_retry関数を呼び出したあとで,リトライするサービス関数をリターンしてください。リターンしたあと,同じプロセスで同じサービス関数が再起動されます。
応答型RPCで呼ばれたサービス関数がリトライされた場合は,リトライ前のサービス関数が設定した値(応答を格納する領域と応答の長さ)は無効になります。
ユーザサービス定義のrpc_service_retry_countオペランドに指定した回数を超えた(rpc_service_retry_countオペランドに0を指定した場合も含む)あとでdc_rpc_service_retry関数を呼び出した場合,関数は DCRPCER_RETRY_COUNT_OVER でエラーリターンします。このとき,サービス関数はリトライされません。応答型RPCで呼ばれたサービス関数の場合は,応答を格納する領域の内容をクライアントUAPに返します。
リターン値
リターン値 |
リターン値(数値) |
意味 |
---|---|---|
DC_OK |
0 |
正常に終了しました。 |
DCRPCER_PROTO |
-302 |
dc_rpc_service_retry関数を呼び出す条件が間違っています。次に示すことが考えられます。
|
DCRPCER_RETRY_COUNT_OVER |
-377 |
ユーザサービス定義のrpc_service_retry_countオペランドに指定したサービスリトライ回数最大値を超えて,dc_rpc_service_retry関数を呼び出しています。これ以上サービス関数をリトライできません。 |
注意事項
-
dc_rpc_service_retry関数を呼び出す場合は,次に示す条件を満たしてください。この条件を満たしていない場合,dc_rpc_service_retry関数はエラーリターンします。
-
サービス関数の中でdc_rpc_service_retry関数を呼び出していること。
-
実行中のサービス関数が,グローバルトランザクションの範囲でないこと。
-
-
dc_rpc_service_retry関数を呼び出すサービス関数では,クライアントUAPから渡されたデータは参照できますが,変更できません。入力データ領域の内容を変更した場合,システムの動作は保証しません。
-
dc_rpc_service_retry関数は,OpenTP1独自のリモートプロシジャコール(dc_rpc_call関数)でサービスを要求されたサービス関数でだけ呼び出せます。それ以外のサービス関数の処理は,dc_rpc_service_retry関数でリトライできません。