分散トランザクション処理機能 OpenTP1 クライアント使用の手引 TP1/Client/W,TP1/Client/P編

[目次][索引][前へ][次へ]

4.3.4 dc_rpc_call_to_s通信先を指定した遠隔サービスの要求

<この項の構成>
(1) 形式
(2) 機能
(3) UAPで値を設定する引数
(4) 値が返される引数
(5) リターン値
(6) 注意事項

(1) 形式

(a) TP1/Client/Wの場合
●_s付き関数
 
#include <dcvrpc.h>
DCLONG dc_rpc_call_to_s(
  DCCLT_ID cltid, struct DCRPC_BINDING_TBL *direction,
  char *group, char *service, char *in,
  DCULONG *in_len, char *out,
  DCULONG *out_len,
  DCLONG flags)
 
●_s無し関数
 
#include <dcvrpc.h>
DCLONG dc_rpc_call_to(
       struct DCRPC_BINDING_TBL *direction,
       char *group, char *service,
       char *in, DCULONG *in_len, char *out, 
       DCULONG *out_len, DCLONG flags)
(b) TP1/Client/Pの場合
●_s付き関数
 
#include <dcvrpc.h>
DCLONG dc_rpc_call_to_s(
  DCCLT_ID cltid, struct DCRPC_BINDING_TBL CLTFAR *direction,
  char CLTFAR *group, char CLTFAR *service, char CLTFAR *in,
  DCULONG CLTFAR *in_len, char CLTFAR *out,
  DCULONG CLTFAR *out_len,
  DCLONG flags)
 
●_s無し関数
 
#include <dcvrpc.h>
DCLONG dc_rpc_call_to(
  struct DCRPC_BINDING_TBL CLTFAR *direction, char CLTFAR *group,
  char CLTFAR *service, char CLTFAR *in, DCULONG CLTFAR *in_len,
  char CLTFAR *out, DCULONG CLTFAR *out_len, DCLONG flags)
 

(2) 機能

dc_rpc_call_s関数と同様に,SPPのサービスを要求します。dc_rpc_call_to_s関数では,サービスグループ名とサービス名に加え,ホスト名を該当するサービス関数の検索のキーとして使用し,サービスの要求先を限定します。

この関数を発行する前にDCRPC_DIRECT_SCHEDULE()を発行し,DCRPC_BINDING_TBL構造体を作成しておく必要があります。引数directionにDCRPC_BINDING_TBL構造体へのアドレスを指定します。それ以外のインタフェースは,dc_rpc_call_s関数と同じです。

(3) UAPで値を設定する引数

(4) 値が返される引数

(5) リターン値

リターン値 数値
(10進数)
意味
DC_OK 0 正常終了しました。
DCRPCER_INVALID_ARGS -2401 引数に指定した値が誤っています。
DCRPCER_PROTO -2402 dc_rpc_open_s関数が実行されていません。
または,常設コネクション確立中にこの関数を発行しています。
または,トランザクションの範囲内でこの関数を発行しています。
DCRPCER_NO_BUFS -2404 必要なバッファが確保できませんでした。または,リソース不足が発生しました。
DCRPCER_NET_DOWN -2406 ネットワーク障害が発生しました。
DCRPCER_TIMED_OUT -2407 dc_rpc_call_to_s関数の処理で時間切れ(タイムアウト)が発生しました。または,サービス要求したSPPが処理完了前に異常終了しました。
DCRPCER_MESSAGE_TOO_BIG -2408 入力パラメタ長が最大値を超えました。
DCRPCER_REPLY_TOO_BIG -2409 返ってきた応答の長さが,CUPで用意した領域を超えています。
DCRPCER_NO_SUCH_SERVICE_GROUP -2410 groupに指定したサービスグループ名は定義されていません。
または,ソケット受信型(ユーザサービス定義receive_from=socket指定)のユーザサーバへサービス要求を行いました。
または,クライアント環境定義DCCLTONLYTHISNODEの指定がNのとき,サービス要求先のSPPが未起動です。
DCRPCER_NO_SUCH_SERVICE -2411 serviceに指定したサービス名は定義されていません。
DCRPCER_SERVICE_CLOSED -2412 serviceに指定したサービスが存在するサービスグループは,閉塞されています。
DCRPCER_SERVICE_TERMINATING -2413 指定したサービスは終了処理中です。
DCRPCER_SERVICE_NOT_UP -2414 クライアント環境定義DCCLTONLYTHISNODEの指定がYのとき,サービス要求先のSPPが未起動です。
または,クライアント環境定義DCWATCHTIMの指定が0のとき,処理完了前に異常終了しました。
DCRPCER_OLTF_NOT_UP -2415 指定したサービスが存在するノードのOpenTP1が実行されていません。
DCRPCER_SYSERR_AT_SERVER -2416 指定したサービスでシステムエラーが発生しました。
DCRPCER_NO_BUFS_AT_SERVER -2417 指定したサービスでメモリ不足が発生しました。
DCRPCER_SYSERR -2418 システムエラーが発生しました。
DCRPCER_INVALID_REPLY -2419 サービス関数がOpenTP1に返した応答長が,1からDCRPC_MAX_MESSAGE_SIZEまでの範囲にありません。
DCRPCER_OLTF_INITIALIZING -2420 サービス要求されたノードにあるOpenTP1は,開始処理中です。
DCRPCER_TRNCHK -2427 負荷を分散する先のノードにあるOpenTP1のバージョンが古いため,ノード間負荷バランス機能を実行できません。このリターン値は,ノード間負荷バランス機能を使用しているSPPにサービスを要求した場合にだけ戻ります。
DCRPCER_TESTMODE -2466 ユーザサービス定義でtest_mode=noと指定したSPPに対してサービス要求しました。
DCRPCER_SECCHK -2470 サービス要求先のSPPは,セキュリティ機能で保護されています。dc_rpc_call_to_s関数を呼び出したUAPには,サーバUAPへのアクセス権限がありません。
DCRPCER_SERVICE_TERMINATED -2478 サービス要求先のSPPが処理完了前に異常終了しました。この値はクライアント環境定義DCEXTENDFUNCTIONに00000001を指定した場合に戻ります。00000000を指定しているか指定を省略していると,リターン値にはDCRPCER_TIMED_OUT,またはDCRPCER_SERVICE_NOT_UPが戻ります。
DCCLTER_INVALID_CLTID -2544 cltidに指定したクライアントIDは,dc_clt_cltin_s関数で受け取ったクライアントIDと異なっています。
DCRPCER_PORT_IN_USE -2547 指定したポート番号は使用されています。または,OSが自動的に割り当てるポート番号が不足しています。
注※
クライアント環境定義DCCLTRPCMAXMSGSIZEに2以上を指定した場合,DCRPC_MAX_MESSAGE_SIZEの値(1メガバイト)ではなく,クライアント環境定義DCCLTRPCMAXMSGSIZEに指定した値になります。

(6) 注意事項