gaio时序图 Do协议处理
2020-07-21 10:11:21 0 举报
Gaio时序图
作者其他创作
大纲/内容
http ws协议解析
读成功通知
继续解析判断
继续解析in缓存数据
阻塞等待所有连接上的事件
通过WaitIO()获取读写结果
处理通过chPendingNotify 触发的pending队列
新连接加入awaiting
ws协议升级判断及响应
ws响应填入out缓存
rec数据拼接到到处理缓存in
新连接接收
业务处理
req中读取请求数据,并填入响应到rsp.Body
针对新连接注册读写事件
ws业务处理
loop协程
获取到连接上的读写事件后出发chEventNotify
处理读写结果及数据
调用handleEvents进行IO上的读写操作,结果放入hangup
有超时设置的操作放入到超时处理队列
wait协程
如果读写为阻塞,则直接进行读写,结果放入hangup
http协议解析
业务/应用
业务读写
http业务处理
主程序
Write
读取数据到连接rec缓存
启动watcher对应的读写处理协程,一个wather一个
无ws标识
触发读写操作,加入到pending
连接监听
Watcher
ws升级响应发送通知
http响应填入out缓存
http数据完整性检查
wsMSG中读取请求,并填入响应到wsMSG.RspData
如果操作的是新连接就进行dup获取新的fd
触发 chNotifyCompletion ,然后应用通过调用WaitIO()来处理读写结果
in缓存去掉已经处理的数据
ws协议解析
通过watcher.Read注册读事件到watcher,数据及操作加入到了pending
读写阻塞时放入到读写队列
已经升级为ws
out缓存响应数据发送通知
Read
创建watcher(可以多个)
收藏
0 条评论
回复 删除
下一页