thrift 使用小结 – 日月光明的日志 – 网易博客

thrift 使用小结 - 日月光明的日志 - 网易博客

thrift 使用小结   2012-09-24 18:15:20|  分类: 编程 |  标签:thrift  optional   |字号 订阅 最近在使用thrift的时候,C++遇到optional属性时,遇到问题:虽然赋值,但thrift不会把值送过去。 thrift文件内容可能会随着时间变化的。如果已经存在的消息类型不再符合设计要求,比如,新的设计要在message格式中添加一个额外字段,但你仍想使用以前的thrift文件产生的处理代码。如果想要达到这个目的,只需: (1)  不要修改已存在域的整数编号 (2)  新添加的域必须是optional的,以便格式兼容。对于一些语言,如果要为optional的字段赋值,需要特殊处理,比如对于C++语言,要为     struct Example{         1 : i32 id,         2 : string name,         3 : optional age,     } 中的optional字段age赋值,需要将它的__isset值设为true,这样才能序列化并传输或者存储(不然optional字段被认为不存在,不会被传输或者存储), Example example; ...... example.age=10, example.__isset.age = true; //__isset是每个thrift对象的自带的public成员,来指定optional字段是否启用并赋值。 ...... 这里没有设置,虽然赋值了,但thrift不认。 (3)  非required域可以删除,前提是它的整数编号不会被其他域使用。对于删除的字段,名字前面可添加“OBSOLETE_”以防止其他字段使用它的整数编号。

原文链接: https://www.cnblogs.com/lexus/archive/2013/04/18/3027987.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    thrift 使用小结 - 日月光明的日志 - 网易博客

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/85168

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午9:54
下一篇 2023年2月9日 下午9:55

相关推荐