lesson52上半部分代码
add时候已存在处理
添加连接后服务器启动后就不断获取这个链接的状态
wait内直接跟的for 如果n<0,错误不处理,等于0,超时也不处理。只有大于0进入for

epollwait 出现错误 客户端把链接关了我wait后epollhup。
不用区分是都异常,读出错自动转去执行异常处理函数
不用区分listen 因为就绪的都是connection链接,不用关心什么就绪,多态。
写透到内核里是为了wait时候返回文件描述符时间就绪,为什么添加到map,因为就绪后用sockfd反查map,调用读写
为什么epollwait时候,epollevent内有events和data 内部常用fd,因为data代表文件数据,可以设置关心的文件描述符,方便我们映射应用层的管理对象,为什么还有指针,因为有人写服务器不一定拥map,传connection地址这样。
万一recv做了异常处理,out内出了问题,可能连接诶已经移除,就出问题了,这里增加判断连接是否存在。
分是吗looponce这块拆开,因为looponce dispatch之后检测connection链接时长,不活跃直接删掉,可以连接管理
time -1是阻塞。
设置非阻塞和ET。
底层文件描述符就绪,我就激活那个节点进行回调处理,我们把这种模式叫做reator模式。
这个reacter可以管理UDP也可以TCP 也可以文件描述符
connect属性不用那么全,分给listen、
channel读到数据之后,回调上层hander,做很多好玩工作
基类子类没用多态,但函数名和参数是一样的,这种情况直接调用子类的注册方法
上半部分