ee_rpc_cmtsend_to
形式
ANSI C,C++の形式
#include <eerpc.h> int ee_rpc_cmtsend_to(struct EERPC_BINDING_TBL *direction, char *group, char *service, char *in, EEULONG *in_len, EELONG flags)
機能
SPPにサービスを要求します。サービスを要求するには,ホスト名またはノード識別子を指定したEERPC_BINDING_TBL構造体に加え,「サービスグループ名」と「サービス名」を引数に設定します。EERPC_BINDING_TBL構造体に指定したホスト名またはノード識別子は,サービス要求先を特定する検索のキーとして使用します。この設定に該当するサービス関数へサービスが要求されます。ドメイン修飾をしてサービスを要求することはできません。
この関数を使う場合,サーバUAPがあるノードのTP1/Server BaseまたはTP1/EEが稼働していることが前提です。
【TP1/FSP限定】RPC関連定義のrpc_output_messageオペランドが設定されている場合,またはユーザサービス関連定義のservice_attr定義コマンドが設定されている場合に,送信データをUAP履歴情報のデータ種別「OJ(出力メッセージ)」として取得します。
オペランドについては,TP1/FSPの関連ドキュメントを参照してください。
UAPで値を設定する引数
●direction
サービス要求先を特定する検索キーを格納するEERPC_BINDING_TBL構造体のアドレスを指定します。検索のキーはホスト名またはノード識別子のどちらかです。
directionの指定値はee_rpc_call_to関数を参照してください。
●group
SPPのサービスグループ名を,31バイト以内のアスキー文字列で設定します。文字列の最後にはNULL文字を設定してください。このNULL文字は文字列の長さに数えません。
●service
SPPのサービス名を,31バイト以内のアスキー文字列で設定します。文字列の最後にはNULL文字を設定してください。このNULL文字は文字列の長さに数えません。
●in
サービスの入力パラメタを設定します。
●in_len
サービスの入力パラメタ長を設定します(単位:バイト)。1〜EERPC_MAX_MESSAGE_SIZE_EX※の範囲の値を指定できます。EERPC_MAX_MESSAGE_SIZE_EXは,eerpc.hで定義してあります。
- 注※
-
従来のEERPC_MAX_MESSAGE_SIZEは,eerpc.hで定義してありますが,EERPC_MAX_MESSAGE_SIZE_EXの使用をお勧めします。
●flags
EENOFLAGSを設定します。
リターン値
ここで示すリターン値は,TP1/EEが返す値です。サービス関数から返される値ではありません。
リターン値 |
意味 |
---|---|
EE_OK |
正常に終了しました。 |
EECOMER_CNDBPP |
オフラインバッチプロセスから発行しているため,この機能は使用できません。 |
EECOMER_CNDUOC |
UOCから発行しているため,この機能は使用できません。 |
EECOMER_ENVIRON |
TP1/EEの環境下にありません。 |
EERPCER_ARGUMENT |
引数に設定した値が間違っています。 EERPC_BINDING_TBL構造体のhostnmに指定されたホスト名が,/etc/hostsファイルまたはDNSなどで,IPアドレスとのマッピングができません。 |
EERPCER_CONDITION |
関数の呼び出し条件が不正です。 RPC関連定義のname_useオペランドにYが設定されていません。 |
EERPCER_MEMORY_SHORT |
メモリが不足しました。 |
EERPCER_MESSAGE_TOO_BIG |
in_lenに設定した入力パラメタ長が,最大値を超えています。 |
EERPCER_NO_SUCH_SERVICE_GROUP |
groupに設定したサービスグループ名は,定義されていません。 |
EERPCER_PARAM_FLAGS |
flagsに設定した値が間違っています。 |
EERPCER_PARAM_GROUP |
groupに設定した値が間違っています。 |
EERPCER_PARAM_IN |
inに設定した値が間違っています。 |
EERPCER_PARAM_IN_LEN |
in_lenに設定した値が間違っています。 |
EERPCER_PARAM_SERVICE |
serviceに設定した値が間違っています。 |
EERPCER_SYSERR |
システムエラーが起こりました。 |
注意事項
-
EERPC_BINDING_TBL構造体にホスト名とノード識別子を同時に指定した場合,ホスト名の指定が有効になり,ノード識別子の指定は無視されます。
-
EERPC_BINDING_TBL構造体にホスト名,ノード識別子ともに0を指定した場合,ee_rpc_cmtsend関数と同様に動作します。
-
EERPC_BINDING_TBL構造体のflagsにEERPC_SCDPORTを指定し,ソケット受信型(ユーザサービス定義のreceive_fromオペランドにsocketを指定)のTP1/Server Baseユーザサーバへサービスを要求した場合,送信エラーとなります。
-
EERPC_BINDING_TBL構造体のflagsにEERPC_SCDPORTを指定して,ee_rpc_cmtsend_to関数を呼び出した場合,rpc_retryオペランドは無効になります。
-
RPC関連定義のname_useオペランドにNを設定して,ee_rpc_cmtsend_to関数を呼び出した場合,EERPCER_CONDITIONでエラーリターンします。
-
【TP1/FSP限定】次のリターン値の場合,出力メッセージ(OJ)は取得されません。
EECOMER_ENVIRON,EECOMER_CNDUOC,EECOMER_CNDBPP,EERPCER_ARGUMENT,EERPCER_PARAM_GROUP,EERPCER_PARAM_SERVICE,EERPCER_PARAM_IN,EERPCER_PARAM_IN_LEN,EERPCER_PARAM_FLAGS,EERPCER_MESSAGE_TOO_BIG
-
その他の注意事項は,ee_rpc_cmtsend関数の注意事項を参照してください。