4.7.5 dc_clt_chained_accept_notification_s − 一方通知受信
(1) 形式
(a) TP1/Client/Wの場合
■ _s付き関数
#include <dcvclt.h> DCLONG dc_clt_chained_accept_notification_s (DCCLT_ID ntfid, char *inf, DCLONG *inf_len, DCLONG timeout, char *hostname, char *nodeid, DCLONG flags)
■ _s無し関数
#include <dcvclt.h> DCLONG dc_clt_chained_accept_notification (char *inf, DCLONG *inf_len, DCLONG timeout, char *hostname, char *nodeid, DCLONG flags)
(b) TP1/Client/Pの場合
■ _s付き関数
#include <dcvclt.h> DCLONG dc_clt_chained_accept_notification_s (DCCLT_ID ntfid, char CLTFAR *inf, DCLONG CLTFAR *inf_len, DCLONG timeout, char CLTFAR *hostname, char CLTFAR *nodeid, DCLONG flags)
■ _s無し関数
#include <dcvclt.h> DCLONG dc_clt_chained_accept_notification (char CLTFAR *inf, DCLONG CLTFAR *inf_len, DCLONG timeout, char CLTFAR *hostname, char CLTFAR *nodeid, DCLONG flags)
(2) 機能
サーバ側の関数dc_rpc_cltsendによって通知されるメッセージを,引数timeoutで指定した値まで待ち続けます。受信した時点でCUPに制御を戻し,リターン値,通知メッセージ,通知メッセージ長,通知元サーバのホスト名,通知元サーバのノード識別子を返します。この関数を発行する前にdc_clt_open_notification_s関数を発行しておく必要があります。
(3) UAPで値を設定する引数
-
ntfid
dc_clt_open_notification_s関数で受け取った一方通知受信IDを指定します。
-
inf
サーバからの通知メッセージを格納する領域を指定します。
-
inf_len
サーバからの通知メッセージを格納する領域の長さ(引数infの長さ)を指定します。0からDCRPC_MAX_MESSAGE_SIZE※の範囲で指定します。
- 注※
-
クライアント環境定義DCCLTRPCMAXMSGSIZEに2以上を指定した場合,DCRPC_MAX_MESSAGE_SIZEの値(1メガバイト)ではなく,クライアント環境定義DCCLTRPCMAXMSGSIZEに指定した値になります。
-
timeout
タイムアウト値(秒)を指定します。0から65535の範囲で指定します。
無限に待ち続ける場合は,0を指定します。
-
hostname
通知したサーバのホスト名を格納する,64バイト※以上の領域を指定します。NULLが指定された場合は,ホスト名を格納しません。
- 注※
-
クライアント環境定義DCCLTOPTIONに00000008を指定した場合,64バイトではなく,256バイトになります。
-
nodeid
通知したサーバのノード識別子を格納する,8バイトの領域を指定します。
-
flags
DCNOFLAGSを指定します。
(4) 値が返される引数
-
inf
サーバからの通知メッセージが返されます。
-
inf_len
サーバからの通知メッセージ長が返されます。
-
hostname
通知したサーバのホスト名が返されます。
ホスト名への変換に失敗した場合,10進ドット記法のIPアドレスが返されます。NULLを指定した場合は,返されません。
-
nodeid
通知したサーバのノード識別子が返されます。ノード識別子のフォーマットは次のとおりです。
(5) リターン値
リターン値 |
数値 (10進数) |
意味 |
---|---|---|
DC_OK |
0 |
正常終了しました。 |
DCCLTER_INVALID_ARGS |
-2501 |
引数に指定した値が誤っています。 |
DCCLTER_PROTO |
-2502 |
dc_clt_open_notification_s関数が実行されていません。 |
DCCLTER_NO_BUFS |
-2504 |
必要なバッファが確保できませんでした。 |
DCCLTER_NET_DOWN |
-2506 |
ネットワーク障害が発生しました。 |
DCCLTER_TIMED_OUT |
-2507 |
メッセージの受信時にタイムアウトになりました。 |
DCCLTER_SYSERR |
-2518 |
システムエラーが発生しました。 |
DCCLTER_VERSION |
-2535 |
バージョン不一致が発生しました。 |
DCCLTER_INVALID_NTFID |
-2544 |
ntfidに指定した一方通知受信IDは,dc_clt_open_notification_s関数で受け取った一方通知受信IDと異なっています。 |
DCCLTER_INF_TOO_BIG |
-2546 |
受信したメッセージが,CUPで用意した領域に収まりません。収まらないメッセージは切り捨てました。引数hostname,およびnodeidには値を設定済みです。 |
DCCLTER_INVALID_MESSAGE |
-2548 |
不正なメッセージを受信しました。 |
DCCLTER_ACCEPT_CANCELED |
-2549 |
一方通知受信待ち状態がdc_clt_cancel_notification_s関数によって解除されました。引数inf,inf_len,およびhostnameには値を設定済みです。 |
(6) 注意事項
引数hostnameには64バイト※以上,引数nodeidには8バイト以上の領域を指定してください。領域がこれより小さい場合,TP1/Client内部の処理で領域破壊を起こすおそれがあります。
- 注※
-
クライアント環境定義DCCLTOPTIONに00000008を指定した場合,64バイトではなく,256バイトになります。