net-snmp代码分析之fd_event_manager.c

net-snmp代码分析之fd_event_manager.c

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值