ee_rpc_reply_send
形式
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 |
システムエラーが起こりました。 |
注意事項
-
一つの抑止識別子で複数のRPC応答メッセージの送信を抑止している場合,一度のee_rpc_reply_send関数で複数のRPC応答メッセージが送信されます。
-
【TP1/FSP限定】次のリターン値の場合,出力メッセージ(OJ)は取得されません。
EECOMER_ENVIRON,EECOMER_CNDUOC,EECOMER_CNDBPP,EERPCER_ARGUMENT,EERPCER_PARAM_OUT_LEN
-
ee_rpc_reply_send()のflagsにEERPC_RSEND_CMTを指定し,かつ,そのトランザクションがロールバック決着した場合,RPC応答メッセージは送信されません。そのため,RPC要求元のクライアントUAPは,応答待ち時間を指定している場合は応答待ちタイムアウト,応答待ち時間を指定していない場合は無限に応答待ちを続けます。
-
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)を送信します。
-
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)を送信します。