Hitachi

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


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

〈この項の構成〉

(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) 注意事項