機能説明
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からイベント受信 */ }