76.reater

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,做很多好玩工作

基类子类没用多态,但函数名和参数是一样的,这种情况直接调用子类的注册方法

上半部分

课堂板书/20250607_结课.png · whb-helloworld/113 - 码云 - 开源中国