機能説明
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)パラメタ
入力パラメタ
チェックするビット数。
記述子セットのポインタ。
タイムアウト値のポインタ。
出力パラメタ
チェックした記述子セットのポインタ。
エラー情報設定構造体。
復帰値
正常終了。
異常終了。
備考
エラー時には、以下のコードが、NWsnmpErrinfo構造体のNWErrorCodeに設定されます。
不当なパラメタが指定されました。
指定時間内にイベントがありませんでした。
イベント待ち合わせで異常が発生しました。
使用例
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からイベント受信 */
}