1、需要处理的事件类型和结构
这里包括文件处理事件、时间处理事件、事件终结处理事件、挂起之前处理事件
文件事件结构
时间事件结构
触发的事件结构
事件驱动程序的状态
2、原型函数
创建文件事件
这里aeApi*这些函数都是具体多路复用模块提供的
删除文件事件
获取事件当前时间
这里精确到秒和毫秒
创建时间事件
时间事件可能会在将来某个时间触发,因此会设置一个到点时刻
处理时间事件
在处理时间事件的时候,首先检查时钟漂移(对已经过期的时钟进行清零,后面会立即执行)
然后迭代时间事件链表,处理当前过期的事件
处理事件
这里包括处理时间事件和文件事件
如果既不是文件事件也不是时间事件,那么直接返回
如果当前有注册的文件事件,并且flag标志说明要处理时间事件,首先计算距离现在最近要发生的时间事件,根据时差计算,如果已经发生,那么清零,如果没有时间事件,那么就需要阻塞等待文件事件(如果设置了不等待的话,就直接返回)
等待文件事件发生或是超时,如果有文件事件发生,那么就处理发生的文件事件
再去考虑处理时间事件
事件处理主循环
在主循环中不断处理所有的事件,直到设置主循环为停止