thrift IDL笔记

1. 生成代码

-r 什么意思?
-o 输出文件目录

thrift.exe -o [directory] -gen cpp [source.thrift]

2. optional、required

required是必须的数据,optional标记的数据若为空则不序列化,若有默认值,则optional未赋值时为默认值。

struct Person{
	1:require string name;
	2:optional string photo
}

3. 常量、枚举类型、默认值

const i32 INT_CONST = 1234;
const map<string,string> MAP_CONST = {"hello": "world", "goodnight": "moon"}
enum TweetType {
TWEET,
RETWEET = 2,
DM = 0xa,
REPLY
}

struct Tweet {
 
1: required i32 userId;
 
2: required string userName;
 
3: required string text;
 
4: optional Location loc;
 
5: optional TweetType tweetType = TweetType.TWEET;
 
16: optional string language = "english"
 
}

4. 命名空间

namespace csharp thrift_test

5. 服务可以被继承、结构体不能被继承

6. 名称与序号

在TBinaryProtocol协议中:

  1. 参数名(包括结构体字段名)不会被编码到协议中
  2. 参数序号会被编码到协议中
  3. 参数类型会被编码到协议中
  4. 接口名称会被编码到协议中

所以在编写IDL时,可以不考虑参数名的长度;为了减小传输的数据量,可以考虑将接口名称尽量简化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值