fd_event_manager.c模块主要作用管理读、写、异常文件描述符。
目录/net-snmp-5.4.2.1/snmplib/fd_event_manager.c
用于存储三种不同类型的描述符
int external_readfd[NUM_EXTERNAL_FDS], external_readfdlen = 0;
int external_writefd[NUM_EXTERNAL_FDS], external_writefdlen = 0;
int external_exceptfd[NUM_EXTERNAL_FDS], external_exceptfdlen = 0;
用于存储三种描述符对应的处理函数
void (*external_readfdfunc[NUM_EXTERNAL_FDS]) (int, void *);
void (*external_writefdfunc[NUM_EXTERNAL_FDS]) (int, void *);
void (*external_exceptfdfunc[NUM_EXTERNAL_FDS]) (int, void *);
存储需处理数据
void *external_readfd_data[NUM_EXTERNAL_FDS];
void *external_writefd_data[NUM_EXTERNAL_FDS];
void *external_exceptfd_data[NUM_EXTERNAL_FDS];
static int external_fd_unregistered;
相当于三个初始化函数,将函数中的参数分别赋给上述数据结构。
int
register_readfd(int fd, void (*func) (int, void *), void *data)
int
register_writefd(int fd, void (*func) (int, void *), void *data)
int
register_exceptfd(int fd, void (*func) (int, void *), void *data)
将指定的文件描述符从数据结构中删除
int
unregister_readfd(int fd)
int
unregister_writefd(int fd)
int
unregister_exceptfd(int fd)
将注册在数据结构的文件描述符添加到对应的文件描述符集中
void netsnmp_external_event_info(int *numfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
测试在数据结构的文件描述符添加到对应的文件描述符集中是否有在三种描述符集中并调用对应的函数进行处理。
void netsnmp_dispatch_external_events(int *count, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)