阻塞TCP流 - phxrpc代码阅读(3)
写在前面
phxrpc的流(stream
和streambuf
)与网络访问其实是耦合在一起的,所以本文可以结合着第一篇笔记一起来看。虽然我非常想吐槽这种强耦合性的设计,但是我决定还是好好理解phxrpc的设计之后。。。攒一波大的:)
BlockTcpStreamBuf
class BlockTcpStreamBuf
继承自BaseTcpStreamBuf
。其中重写了precv
和psend
两个函数,并且持有了一个文件描述符(file descriptor):socket_
。
precv
和psend
直接调用了<sys/socket.h>
中的recv(2)
和send(2)
,并没有其它操作。
网络相关的操作,则由class BlockTcpStream
来负责。BlockTcpStreamBuf
只负责IO部分。
if (BaseTcpUtils::SetNonBlock(sockfd, false …