transport类体系架构与TProtocol类体系架构一样,所以这里就不重复叙述了,想了解可转去TProtocol类体系架构分析那篇。
下面将对transport层的几种transport类进行介绍:
1、TSocket 阻塞型socket, 用于客户端,采用系统函数read和write进行读写数据;
2、TServerSocket 非阻塞型socket, 用于服务器端, accecpt到的socket类型都是TSocket(即阻塞型socket);
3、TBufferedTransport和TFramedTransport都是有缓存的,均继承TBufferBase,调用下一层TTransport类进行读写操作,结构极为相似。只是TFramedTransport以帧为传输单位,帧结构为:4个字节(int32_t)+传输字节串,头4个字节是存储后面字节串的长度,该字节串才是正确需要传输的数据,因此TFramedTransport每传一帧要比TBufferedTransport和TSocket多传4个字节;
4、TMemoryBuffer继承TBufferBase,用于程序内部通信用,不涉及任何网络I/O,可用于三种模式:(1)OBSERVE模式,不可写数据到缓存;(2)TAKE_OWNERSHIP模式,需负责释放缓存;(3)COPY模式,拷贝外面的内存块到TMemoryBuffer。
5、TFileTransport直接继承TTransport,用于写数据到文件。对事件的形式写数据,主线程负责将事件入列