<version number, 2 bytes> <useless field, 1 byte> <message type, 1 byte> <method name length, 4 bytes> <method name, n bytes> <serial number, 4 bytes>< Parameters..., n bytes>
<parameters..., n bytes> refer to struct
Field
<Field type, 1 byte> <Field Id, 2 bytes>
<Field type (stop), 1 byte>
The above Field Id corresponds to The number before ":" in the following example:
struct Order {
1: required i64 orderId;
2: required i64 userId;
3: required string status;
}
Field
stop
<Field type (stop), 1 byte> -> <0x00( 0), 1 byte>
void
bool
<Field type (bool), 1 byte> <Field Id, 2 bytes> <value, bool (1 byte)> -> <0x02(2), 1 byte> <Field Id, 2 bytes><value, bool(1 byte)>
byte
<Field type(byte), 1 byte><Field Id, 2 bytes><value, byte(1 byte)> -> < 0x03(3), 1 byte><Field Id, 2 bytes><value, byte(1 byte)>
double
<Field type (double), 1 byte> <Field Id, 2 bytes> <value, double (8 bytes)> -> <0x04 (4), 1 byte><Field Id, 2 bytes>< value, double(8 bytes)>
i16
<Field type(i16), 1 byte> <Field Id, 2 bytes> <value, i16(2 bytes)> -> <0x06(6), 1 byte ><Field Id, 2 bytes> <value, i16 (2 bytes)>
i32
<Field type (i32), 1 byte> <Field Id, 2 bytes> <value, i32 (4 bytes)> - > <0x08(8), 1 byte><Field Id, 2 bytes><value, i32(4 bytes)>
i64
<Field type(i64), 1 byte><Field Id, 2 bytes>< value, i64(8 bytes)> -> <0x0A(10), 1 byte> <Field Id, 2 bytes> <value, i64(8 bytes)>
string
<Field type(string), 1 byte ><Field Id, 2 bytes><string type field length, 4 bytes><value, n bytes> -> <0x0B(11), 1 byte><Field Id, 2 bytes><string type field length, 4 bytes> <value, n bytes>
struct
< Field type (struct), 1 byte><Field Id, 2 bytes>...<Field type (stop), 1 byte> -> <0x0C(12), 1 byte><Field Id, 2 bytes> … <0x00(0), 1 byte>
<Field type (struct), 1 byte> <Field Id, 2 bytes>
<Field type, 1 byte><Field Id, 2 bytes><value, bool(1 byte)>|
<Field type, 1 byte><Field Id, 2 bytes><value, byte(1 word section)>|
<Field type, 1 byte> <Field Id, 2 bytes> <value, i16(2 bytes)>|
<Field type, 1 byte> <Field Id, 2 bytes> <value, i32(4 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes><value, i64(8 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes ><value, double (8 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes><string type field length, 4 bytes><value, n bytes> |
(<Field type (struct), 1 byte> <Field Id, 2 bytes>
<Field type, 1 byte> <Field Id, 2 bytes> <value, bool(1 byte)> |
<Field type, 1 byte ><Field Id,2bytes><value,byte(1byte)>|
<Field type,1byte><Field Id,2bytes><value,i16(2bytes)> |
<Field type, 1 byte> <Field Id, 2 bytes> <value, i32(4 bytes)>|
<Field type, 1 byte> <Field Id, 2 bytes> <value, i64(8 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes><value, double(8 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes><string type field length, 4 bytes><value,nbytes>|
…
<Field type(stop),1byte>)
…
<Fieldtype(stop),1byte> struct method parameters (args) method calls
in several special cases The parameters that need to be passed are serialized through struct. Implemented in the scheme. <Field type, 1 byte><Field Id, 2 bytes><value, bool(1 byte)>| <Field type, 1 byte><Field Id, 2 bytes><value, byte(1 word section)>| <Field type, 1 byte> <Field Id, 2 bytes> <value, i16(2 bytes)>| <Field type, 1 byte> <Field Id, 2 bytes> <value, i32(4 bytes)>| <Field type, 1 byte><Field Id, 2 bytes><value, i64(8 bytes)>| <Field type, 1 byte><Field Id, 2 bytes ><value, double (8 bytes)>| <Field type,
<Field type, 1 byte><Field Id, 2 bytes><value, bool(1 byte)>|
<Field type, 1 byte><Field Id, 2 bytes><value, byte(1 word section)>|
<Field type, 1 byte> <Field Id, 2 bytes> <value, i16(2 bytes)>|
<Field type, 1 byte> <Field Id, 2 bytes> <value, i32(4 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes><value, i64(8 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes ><value, double (8 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes><string type field length, 4 bytes><value, n bytes> |
…
<Field type (stop), 1 byte>)|
…
<Field type (stop), 1 byte>
Method return After the
method is called, the return value is serialized through struct. Implemented in the scheme.
map
<Field type (map), 1 byte><Field Id, 2 bytes><key type in map, 1 byte><value type in map, 1 byte><number of elements in set,
<Field type, 1 byte> <Field Id, 2 bytes> <value, i16 (2 bytes)>|
<Field type, 1 byte> <Field Id, 2 bytes> <value, i32 (4 bytes) section)>|
<Field type, 1 byte><Field Id, 2 bytes><value, i64(8 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes><value, double(8 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes><string type field length, 4 bytes><value, n bytes> |
(<Field type(struct), 1byte><Field Id,2bytes>
<Field type,1byte><Field Id,2bytes><value,bool(1byte)>|
<Fieldtype,1byte><Field Id ,2bytes><value,byte(1byte)>|
<Field type,1byte><Field Id,2bytes><value,i16(2bytes)>|
<Fieldtype,1byte ><Field Id, 2 bytes> <value, i32 (4 bytes)>|
<Field type, 1 byte> <Field Id, 2 bytes> <value, i64 (8 bytes)> |
<Field type, 1 byte><Field Id, 2 bytes><value, double(8 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes><string type field length, 4 bytes><value,nbytes>|
…
<Field type (stop), 1 byte>))
(<Field type, 1 byte> <Field Id, 2 bytes> <value, bool (1 byte)> |
<Field type, 1 byte>< Field Id, 2 bytes><value,byte(1 byte)>|
<Field type,1 byte><Field Id,2 bytes><value,i16(2 bytes)>|
<Field type,1 bytes><Field Id,2bytes><value,i32(4bytes)>|
<FieldType,1byte><Field Id,2bytes><value,i64(8bytes)>|
< Field type, 1 byte><Field Id, 2 bytes><value, double(8 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes><string type field length, 4 words section><value,nbytes>|
(<Field type(struct),1byte><Field Id,2bytes>
<Fieldtype,1byte><Field Id,2bytes><value,bool (1 byte)>|
<Field type, 1 byte><Field Id, 2 bytes><value, byte(1 byte)>|
<Field type, 1 byte>< Field Id, 2 bytes><value,i16(2 bytes)>|
<Field type,1 byte><Field Id,2 bytes><value,i32(4 bytes)>|
<Field type,1 bytes><Field Id, 2 bytes><value, i64(8 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes><value, double(8 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes><string type field length, 4 bytes><value,nbytes>|
…
<FieldType(stop),1byte>)))
…
set
<FieldType(set),1byte><FieldId,2bytes><set Element type, 1 byte><Number of elements in set, 4 bytes>
<Field type, 1 byte><Field Id, 2 bytes><value, bool(1 byte)>|
<Field type, 1 byte><Field Id,2bytes><value,byte(1byte)>|
<Field type,1byte><Field Id,2bytes><value,i16(2bytes)>|
< Field type, 1 byte><Field Id, 2 bytes><value,i32(4 bytes)>|
<Field type,1 byte><Field Id,2 bytes><value,i64(8 bytes )>|
<Field type, 1 byte><Field Id, 2 bytes><value, double(8 bytes)>|
< Field type, 1 byte><Field Id, 2 bytes><string type field length, 4 bytes><value, n bytes> |
(<Field type (struct), 1 byte><Field Id, 2 bytes>
<Field type, 1 byte><Field Id, 2 bytes><value, bool(1 byte)>|
<Field type, 1 byte><Field Id, 2 bytes><value, byte(1 word section)>|
<Field type, 1 byte> <Field Id, 2 bytes> <value, i16(2 bytes)>|
<Field type, 1 byte> <Field Id, 2 bytes> <value, i32(4 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes><value, i64(8 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes ><value, double (8 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes><string type field length, 4 bytes><value, n bytes> |
…
<Field type (stop), 1 byte>)
…
list
<Field type (list), 1 byte><Field Id, 2 bytes><element type in list, 1 byte><number of elements in list, 4 bytes >
<Field type, 1 byte> <Field Id, 2 bytes> <value, bool(1 byte)> |
<Field type, 1 byte><Field Id, 2 bytes><value, byte(1 byte)>|
<Field type, 1 byte><Field Id, 2 bytes><value, i16(2 bytes)>|
<Field type, 1 byte> <Field Id, 2 bytes> <value, i32 (4 bytes)>|
<Field type, 1 byte> <Field Id, 2 bytes> <value, i64 (8 bytes) section)>|
<Field type, 1 byte><Field Id, 2 bytes><value, double(8 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes><string type Field length, 4 bytes> <value, n bytes> |
(<Field type (struct), 1 byte> <Field Id, 2 bytes>
<Field type, 1 byte> <Field Id, 2 bytes ><value, bool(1 byte)>|
<Field type, 1 byte><Field Id, 2 bytes><value, byte(1 byte)>|
<Field type, 1 byte><Field Id ,2bytes><value,i16(2bytes)>|
<Field type,1byte><Field Id,2bytes><value,i32(4bytes)>|
< Fieldtype,1byte ><Field Id, 2 bytes><value, i64(8 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes><value, double (8 bytes)>|
<Field type, 1 byte><Field Id, 2 bytes><string type field length, 4 bytes><value, n bytes> |
…
<Field type (stop), 1 byte >)
...
enum
version number The
version field is determined by bytes 1-2, which must be 0x80, 0x01. A total of 2 bytes, converted to an integer as 0x8001????, and the mask 0xffff0000 and operation to get the version number.
0x8001???? -> 0x80 0x01 0x?? 0x??
0x80010000 -> 0x80 0x01 0x00 0x00
message type The
message type field is determined by the fourth field, including call(1), reply(2), exception(3) and one-way(4) 4 message types
Method name length
The method name length field is determined by fields 5-8.
Method name The
method name field consists of the 9th-? field decision.
Serial number
4 bytes.
Thrift serialization
Guess you like
Origin http://43.154.161.224:23101/article/api/json?id=326218309&siteId=291194637
Recommended
Ranking