fdwatch.c文件的主要作用是管理服务器的文件描述符。
1.几个关键的静态本文件内有效的全局变量
static int nfiles; //最大支持监听的文件的数量
static long nwatches; //监听的文件的数量
static int* fd_rw; //文件描述符的读写状态数组
static void** fd_data; //读写文件描述符的数据二维数组
static int nreturned; //当前可以使用的文件描述符的数量
static int next_ridx; //下一个需要读取的文件描述符的索引值
2.几个关键的宏
这几个宏根据系统的支持和用户的定义进行配置
WHICH:指定使用管理文件描述符的模型
INIT( nf ):初始化此模型的相关参数以及模型的数组的大小
ADD_FD( fd, rw ) :向模型中添加文件描述符
DEL_FD( fd ) :从模型中删除文件描述符
WATCH( timeout_msecs ) :返回准备好读写或者异常处理的描述符的数量
CHECK_FD( fd ):返回此文件描述符的状态
GET_FD( ridx ) :返回此索引号在准备好读写异常处理的描述符数组中的状态。
3.函数
下面以poll模型进行描述。
int fdwatch_get_nfiles( void )
依据用户的设置和系统的状态初始化对应模型数组的大小,并返回此大小。
void fdwatch_add_fd( int fd, void* client_data, int rw )
向对应模型的数组中添加此文件描述符,并在对应的读写状态数组和用户数据数组中更新对应的数据。
void fdwatch_del_fd( int fd )
向对应模型的数组中删除此文件描述符,并在对应的读写状态数组和用户数据数组中更新对应的数据。
int fdwatch( long timeout_msecs )
读取对应模型数组中已经准备好读,写,异常处理的文件描述符的数量,并更新对应文件描述符数组和读写异常处理文件描述符数组的状态,返回已经准备好读,写,异常处理的文件描述符的数量。
int fdwatch_check_fd( int fd )
根据传入的文件描述符,返回此文件描述符是否处于可读,写,异常处理的状态
void* fdwatch_get_next_client_data( void )
返回下一个可以执行的文件描述符标识。
void fdwatch_logstats( long secs )
打印文件描述符的相关信息,监测的文件描述符的数量,模型名称,每秒监测的数量。