Home - yu000hong/thrift-study GitHub Wiki
Welcome to the thrift-study wiki!
TType
Thrift支持的数据类型:
public static final byte STOP = 0;
public static final byte VOID = 1;
public static final byte BOOL = 2;
public static final byte BYTE = 3;
public static final byte DOUBLE = 4;
public static final byte I16 = 6;
public static final byte I32 = 8;
public static final byte I64 = 10;
public static final byte STRING = 11;
public static final byte STRUCT = 12;
public static final byte MAP = 13;
public static final byte SET = 14;
public static final byte LIST = 15;
public static final byte ENUM = 16;
TField & TFieldIdEnum & FieldMetaData
TField是一个类,其代表我们定义的数据类型中的一个字段,是由thrift生成的代码,如:
private static final TField ID_FIELD_DESC = new TField("id", TType.I64, (short)1);
private static final TField TYPE_FIELD_DESC = new TField("type", TType.I32, (short)2);
private static final TField XCID_FIELD_DESC = new TField("xcid", TType.I64, (short)3);
private static final TField STATUS_FIELD_DESC = new TField("status", TType.I32, (short)4);
private static final TField TITLE_FIELD_DESC = new TField("title", TType.STRING, (short)7);
private static final TField CARD_FIELD_DESC = new TField("card", TType.STRUCT, (short)11);
TFieldIdEnum是一个接口,也是跟类型字段相关的,由thrift生成,如:
public enum _Fields implements TFieldIdEnum {
ID((short)1, "id"),
TYPE((short)2, "type"),
STATUS((short)4, "status"),
CREATE_TIME((short)5, "createTime"),
TITLE((short)7, "title"),
CONTENT((short)8, "content"),
CARD((short)11, "card");
...
}
FieldMetaData类用于存放字段的元数据,包括:字段名、是否必须、值类型元数据。
meta_data package
meta_data包里有7个类,它们分别是:
- FieldMetaData
- FieldValueMetaData
- EnumMetaData
- ListMetaData
- MapMetaData
- SetMetaData
- StructMetaData
其中,FieldMetaData表示字段的元数据,而FieldValueMetaData及其子类表示字段值类型的元数据。FieldValueMetaData能表示一些基础类型的元数据信息,复杂类型(list、map、set、enum、struct)的元数据则由其子类负责。
继承关系:
FieldValueMetaData
|------ListMetaData
|------MapMetaData
|------SetMetaData
|------StructMetaData
|------EnumMetaData
Scheme
org.apache.thrift.scheme包里面有两个接口两个类,分别是:
- IScheme
- SchemeFactory
- StandardScheme
- TupleScheme
类继承关系如下:
IScheme
|----StandardScheme
|----TupleScheme
scheme在thrift里面有什么用途目前还没研究清楚,但是目前thrift里面大部分protocol都是支持StandardScheme,TupleScheme支持较少。不同Scheme在写入数据到通信信道时候的格式不一样。