ページの先頭行へ戻る
Systemwalker Centric Manager API・スクリプトガイド

4.57 NWsnmpReadSelect()関数

機能説明

select()関数による、同期型入力の多重化を行います。

本関数はselect()関数をSNMPの受信用に簡易化したものです。

FD_ZERO(NWsnmpFd_set *mask)で、記述子セットをクリアしてください。

クリアした記述子セットに、FD_SET(NWSNMP_FD sockfd,NWsnmpFd_Set* mask)で、ソケットIDをセットします(複数個指定できます)。

NWsnmpReadSelect()関数で、入力のチェックを行います。

“timeout”に“NULL”を指定すると、入力可能状態になるまで復帰しません。

ソケットの読み取り準備確認には、FD_ISSET(NWSNMP_FD sockfd,NWsnmpFd_set* mask)を使用してください。

呼び出し形式

int NWsnmpReadSelect(NWSNMP_FD width, NWsnmpFd_Set* readfds,
                     struct timeval *timeout, NWsnmpErrinfo *infoErr)

パラメタ

入力パラメタ

width:

チェックするビット数。

readfds:

記述子セットのポインタ。

timeout:

タイムアウト値のポインタ。

出力パラメタ

readfds:

チェックした記述子セットのポインタ。

infoErr:

エラー情報設定構造体。

復帰値

1:

正常終了。

0:

異常終了。

備考

エラー時には、以下のコードが、NWsnmpErrinfo構造体のNWErrorCodeに設定されます。

NWSNMP_PARAMETER_ERR:

不当なパラメタが指定されました。

NWSNMP_TIMEOUT_ERR:

指定時間内にイベントがありませんでした。

NWSNMP_SELECT_ERR:

イベント待ち合わせで異常が発生しました。

使用例

NWSNMP_FD         sock_snmp;        /* NWsnmpOpen関数で取得したソケットID */
NWSNMP_FD         sock_trap;        /* NWsnmpTrapdOpen関数で取得したソケットID */
struct timeval    timeout;          /* タイムアウト値      */
NWsnmpFd_Set      mask;             /* 記述子セット        */
NWsnmpErrinfo     infoErr;          /* エラー通知構造体    */

-中略-

/* タイムアウト値を設定 */
timeout.tv_sec = 10;
timeout.tv_usec = 0;

/* 記述子セットの初期化 */
FD_ZERO(&mask);

/* 記述子セットにソケットIDを設定 */
FD_SET (sock_snmp, &mask );
FD_SET (sock_trap,   &mask );

/* 同期型入力の多重化 */
if (!NWsnmpReadSelect(sock_trap + 1, &mask, &timeout, &infoErr)) {
/* エラー処理 */
}

/* sock_snmpの読み取り準備確認 */
if (FD_ISSET(sock_snmp, &mask)) {
        /* sock_snmpからイベント受信 */
}
/* sock_trapの読み取り準備確認 */
if (FD_ISSET(sock_trap, &mask)) {
        /* sock_trapからイベント受信 */
}