Go发起HTTP2.0请求流程分析(前篇)(8)

2023-04-30 来源:飞速影视
2.3、如果当前连接处理的数据流确实已经达到上限,则开始进入等待流程。

Go发起HTTP2.0请求流程分析(前篇)


通过上面的逻辑知道,当前连接处理的数据流达到上限后有两种情况,一是等待请求被取消,二是等待其他请求结束。如果有其他数据流结束并唤醒当前等待的请求,则重复2.1、2.2和2.3的步骤。
3、调用cc.newStream()在连接上创建一个数据流(创建数据流是线程安全的,因为源码中在调用awaitOpenSlotForRequest之前先加锁,直到写入请求的header之后才释放锁)。

Go发起HTTP2.0请求流程分析(前篇)


笔者对上述代码简单描述如下:
新建一个http2clientStream,数据流ID为cc.nextStreamID,新建数据流后,cc.nextStreamID =2。数据流通过http2resAndError管道接收请求的响应。初始化当前数据流的可写流控制窗口大小为cc.initialWindowSize,并保存连接的可写流控制指针。初始化当前数据流的可读流控制窗口大小为http2transportDefaultStreamFlow,并保存连接的可读流控制指针。最后将新建的数据流注册到当前连接中。4、调用cc.t.getBodyWriterState(cs, body)会返回一个http2bodyWriterState
结构体。通过该结构体可以知道请求body是否发送成功。

Go发起HTTP2.0请求流程分析(前篇)


相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号