标签:java thrift
thrift文件的基本数据类型
The first thing to know about are types. The available types in Thrift are:
bool Boolean, one byte
byte Signed byte
i16 Signed 16-bit integer
i32 Signed 32-bit integer
i64 Signed 64-bit integer
double 64-bit floating point value
string String
binary Blob (byte array)
map Map from one type to another
list Ordered list of one type
set Set of unique elements of one type
包含其他的thrift文件
Thrift files can reference other Thrift files to include common struct
and service definitions. These are found using the current path, or by
searching relative to any paths specified with the -I compiler flag.
Included objects are accessed using the name of the .thrift file as a
prefix. i.e. shared.SharedObject
include "shared.thrift"
包名
Thrift files can namespace, package, or prefix their output in various
target languages.
namespace cpp tutorial
namespace d tutorial
namespace java tutorial
namespace php tutorial
namespace perl tutorial
namespace haxe tutorial
别名
Thrift lets you do typedefs to get pretty names for your types. Standard
C style here.
typedef i32 MyInteger
常量
Thrift also lets you define constants for use across languages. Complex
types and structs are specified using JSON notation.
枚举
You can define enums, which are just 32 bit integers. Values are optional
and start at 1 if not supplied, C style again.
enum Operation {
ADD = 1,
SUBTRACT = 2,
MULTIPLY = 3,
DIVIDE = 4
}
bean
Structs are the basic complex data structures. They are comprised of fields
which each have an integer identifier, a type, a symbolic name, and an
optional default value.
Fields can be declared "optional", which ensures they will not be included
in the serialized output if they aren‘t set. Note that this requires some
manual management in some languages.
struct Work {
1: i32 num1 = 0,
2: i32 num2,
3: Operation op,
4: optional string comment,
}
异常
Structs can also be exceptions, if they are nasty.
exception InvalidOperation {
1: i32 whatOp,
2: string why
}
服务
Ahh, now onto the cool part, defining a service. Services just need a name
and can optionally inherit from another service using the extends keyword.
service Calculator extends shared.SharedService {
A method definition looks like C code. It has a return type, arguments,
and optionally a list of exceptions that it may throw. Note that argument
lists and exception lists are specified using the exact same syntax as
field lists in struct or exception definitions.
void ping(),
i32 add(1:i32 num1, 2:i32 num2),
i32 calculate(1:i32 logid, 2:Work w) throws (1:InvalidOperation ouch),
This method has a oneway modifier. That means the client only makes
a request and does not listen for any response at all. Oneway methods
must be void.
oneway void zip()
}
本文出自 “theYllwRvrNo98” 博客,请务必保留此出处http://yellowriver.blog.51cto.com/8753974/1673446
标签:java thrift
原文地址:http://yellowriver.blog.51cto.com/8753974/1673446