Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引


ee_rpc_reply_send

〈このページの構成〉

名称

抑止していたRPC応答メッセージの送信

形式

ANSI C,C++の形式

#include <eerpc.h>
int ee_rpc_reply_send(EEULONG id, char *out, EEULONG out_len,
                      EELONG flags)

機能

ee_rpc_reply_suspend関数で抑止していたRPC応答メッセージを送信します。

【TP1/FSP限定】RPC関連定義のrpc_output_messageオペランドが設定されている場合,またはユーザサービス関連定義のservice_attr定義コマンドが設定されている場合に,送信データをUAP履歴情報のデータ種別「OJ(出力メッセージ)」として取得します。

オペランドについては,TP1/FSPの関連ドキュメントを参照してください。

UAPで値を設定する引数

●id

抑止識別子を設定します。ee_rpc_reply_suspend関数で割り当てた抑止識別子を設定してください。

●out

サービス関数からの応答を設定します。

●out_len

サービス関数からの,実際の応答の長さを設定します(単位:バイト)。クライアントUAPから渡されたout_lenの値以下の数値を設定してください。

●flags

次のフラグを指定します。

EENOFLAGS

このAPIの延長でRPC応答メッセージを送信します。

EERPC_RSEND_CMT

このAPIを発行したトランザクションがコミット決着した時点でRPC応答メッセージを送信します。トランザクションがロールバック決着した場合はRPC応答メッセージを送信せずに破棄します。

EERPC_RSEND_CMTERR

このAPIを発行したトランザクションがコミット決着した時点でRPC応答メッセージを送信します。トランザクションがロールバック決着した場合は,RPCエラー応答メッセージ(EERPCER_TRNCHK_EXTEND)を送信します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため,この機能は使用できません。

EECOMER_CNDUOC

UOCから発行しているため,この機能は使用できません。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EERPCER_AGAIN

サービスを要求されたSPPのメッセージ格納領域に十分な空きがないため,サービス要求を受け付けられません。

EERPCER_ARGUMENT

引数に設定した値が間違っています。

EERPCER_CONDITION

関数の呼び出し条件が不正です。

EERPCER_MEMORY_SHORT

メモリが不足しました。

EERPCER_NET_DOWN

ネットワークに障害が起こりました。

EERPCER_NO_SERVICE_SOCKET

コネクションの取得に失敗しました。

EERPCER_NOTHING

idに設定した値は未登録か,すでにタイムアウトなどで応答が返されています。

EERPCER_PARAM_OUT_LEN

out_lenに設定した値が間違っています。

EERPCER_SYSERR

システムエラーが起こりました。

注意事項

  1. 一つの抑止識別子で複数のRPC応答メッセージの送信を抑止している場合,一度のee_rpc_reply_send関数で複数のRPC応答メッセージが送信されます。

  2. 【TP1/FSP限定】次のリターン値の場合,出力メッセージ(OJ)は取得されません。

    EECOMER_ENVIRON,EECOMER_CNDUOC,EECOMER_CNDBPP,EERPCER_ARGUMENT,EERPCER_PARAM_OUT_LEN

  3. ee_rpc_reply_send()のflagsにEERPC_RSEND_CMTを指定し,かつ,そのトランザクションがロールバック決着した場合,RPC応答メッセージは送信されません。そのため,RPC要求元のクライアントUAPは,応答待ち時間を指定している場合は応答待ちタイムアウト,応答待ち時間を指定していない場合は無限に応答待ちを続けます。

  4. ee_rpc_reply_send()のflagsにEERPC_RSEND_CMTまたはEERPC_RSEND_CMTERRを指定し,かつ,そのトランザクションがプロセスリラン後にコミット決着した場合,RPCエラー応答メッセージ(EERPCER_NO_BUFS_AT_SERVER)を送信します。ロールバック決着した場合,EERPC_RSEND_CMTはRPC応答メッセージを破棄,EERPC_RSEND_CMTERRはRPCエラー応答メッセージ(EERPCER_TRNCHK_EXTEND)を送信します。

  5. ee_trn_rollback_mark()発行済みの状態で,ee_rpc_reply_send()のflagsにEERPC_RSEND_CMTまたはEERPC_RSEND_CMTERRを指定しても,ee_rpc_reply_send()は正常に終了します。その後,トランザクションがロールバック決着した時点で,EERPC_RSEND_CMTはRPC応答メッセージを破棄,EERPC_RSEND_CMTERRはRPCエラー応答メッセージ(EERPCER_TRNCHK_EXTEND)を送信します。