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_OK0正常に終了しました。
DCRPCER_PROTO-302dc_rpc_service_retry関数を呼び出す条件が間違っています。次に示すことが考えられます。
  • サービス関数の中で呼び出していません。
  • グローバルトランザクションの範囲の中で呼び出しています。
DCRPCER_RETRY_COUNT_OVER-377ユーザサービス定義のrpc_service_retry_countオペランドに指定したサービスリトライ回数最大値を超えて,dc_rpc_service_retry関数を呼び出しています。これ以上サービス関数をリトライできません。

注意事項

  1. dc_rpc_service_retry関数を呼び出す場合は,次に示す条件を満たしてください。この条件を満たしていない場合,dc_rpc_service_retry関数はエラーリターンします。
    • サービス関数の中でdc_rpc_service_retry関数を呼び出していること。
    • 実行中のサービス関数が,グローバルトランザクションの範囲でないこと。
  2. dc_rpc_service_retry関数を呼び出すサービス関数では,クライアントUAPから渡されたデータは参照できますが,変更できません。入力データ領域の内容を変更した場合,システムの動作は保証しません。
  3. dc_rpc_service_retry関数は,OpenTP1独自のリモートプロシジャコール(dc_rpc_call関数)でサービスを要求されたサービス関数でだけ呼び出せます。それ以外のサービス関数の処理は,dc_rpc_service_retry関数でリトライできません。