thrift之protocol源码分析

thrift之protocol源码分析

ID:30505202

大小:16.43 KB

页数:4页

时间:2018-12-30

thrift之protocol源码分析_第1页
thrift之protocol源码分析_第2页
thrift之protocol源码分析_第3页
thrift之protocol源码分析_第4页
资源描述:

《thrift之protocol源码分析》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解Thrift之Protocol源码分析之前写过两篇关于Thrift的相关文章。Thrift源码剖析Thrift异步IO服务器源码分析也算是对Thrift比较熟悉,不过对Thrift里面的Protocol部分还是黑盒使用。虽然大概能猜到具体实现方式,但是还是忍不住花了一点点时间把具体代码实现翻出来看看。主要是为了满足一下好奇心。简单搞了一个Thrift的描述文件Insight.thrift作为例子。structPerso

2、n{1:stringname,2:i32age,3:optionalstringaddress,}serviceInsight{PersonHello(1:Personperson),PersonHi(1:Personp1,2:Personp2),}然后通过毕竟Thrift其实就是干RPC的活,所以看源码就按着RPC远程调用的顺序来看就行。从Hello函数调用开始,InsightClient::Hello对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基

3、本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解可以看出,在每次RPC调用的时候,会先将函数名通过writeMessageBegin("Hello",::apache::thrift::protocol::T_CALL,cseqid)先发送过去。这个过程的序列化协议很简单,直接就是传输的函数名字符串。然后再发送参数。发送参数的时候,会将所有参数作为一个struct发送InsightHellopargs,所以协议的序列化过程主要都是体现在struct的序列化上面。比如像Hi函数的参数序列化过程:

4、uint32_tInsight_Hi_pargs::write(::apache::thrift::protocol::TProtocoloprot)const{uint32_txfer=0;xfer+=oprot->writeStructBegin("Insight_Hi_pargs");xfer+=oprot->writeFieldBegin("p1",::apache::thrift::protocol::T_STRUCT,1);xfer+=((this->p1)).write(oprot);xfer+=oprot->writeFieldEnd();

5、xfer+=oprot->writeFieldBegin("p2",::apache::thrift::protocol::T_STRUCT,2);对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解xfer+=((this->p2)).write(oprot);xfer+=oprot->writeFieldEnd();xfer+=oprot->

6、writeFieldStop();xfer+=oprot->writeStructEnd();returnxfer;}整个对象的序列化过程主要是依赖了接口TProtocol的函数。对于实现TProtocol接口的序列化实现主要是以下三种(在thrift-0.9.0/lib/cpp/src/thrift/protocol里):TBinaryProtocolTCompactProtocolTJSONProtocol要了解协议序列化过程主要看一下TBinaryProtocol和TCompactProtocol就够了。主要是如下几个关键点:其实writeStruc

7、tStruct和writeStructEnd啥屁事也不用做。其实writeFieldBegin只有后两个参数有用,第二个参数是类型,第三个参数是ID,因为光靠这两者就可以在反序列化(读取解析)的时候知道是哪个成员了。structwrite对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解的过程其实是个递归的过程,也就是在write函数中,会递归

8、的调用结构体本身每个成员的write函数。TCompactProt

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。