版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在页面明显位置给出原文链接。 https://blog.csdn.net/mengxiangqihangz/article/details/88543306
文章目录
前一篇 到了 Http11NioProcessor 的process一个SocketWrapper(就是KeyAttachment实例)
读取数据
======================================================
此段也可以不了解,直接通过debug,一步一步走下去,不跨线程不影响理解
Http11NioProcessor 继承了 AbstractHttp11Processor 继承了AbstractProcessor
- 构造方法
也就是process 与 inputBuffer 、outputBuffer 、request 和response 是绑定死的,而不是外部传入的
======================================================
Http11NioProcessor
- AbstractHttp11Processor 的process()
读取数据,并不是Http11NioProcessor 自己读取,而是交由 InternalNioInputBuffer 进行真正的读取 - InternalNioInputBuffer parseRequestLine()
fill方法,可以理解为装填。就是把 通道中的数据读取到 buf 中。 然后开始解析buf
- request 的methodMB
- 解析请求路径和参数
- protocol
- InternalNioInputBuffer parseHeaders
5. parseHeaders 小结
最终解析的结果如上图,就是将读取的数据,封装到processor 的inputBuffer 中的headers中。
MimeHeaderField 中含两个属性 nameB、valueB 刚好相当于键值对
===》 至此读取数据完成