zoukankan      html  css  js  c++  java
  • 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_”以防止其他字段使用它的整数编号。
  • 相关阅读:
    Unique Binary Search Trees 解答
    Unique Paths II 解答
    Unique Paths 解答
    Maximum Subarray 解答
    Climbing Stairs 解答
    House Robber II 解答
    House Robber 解答
    Valid Palindrome 解答
    Container With Most Water 解答
    Remove Duplicates from Sorted List II 解答
  • 原文地址:https://www.cnblogs.com/lexus/p/3027987.html
Copyright © 2011-2022 走看看