扩展类型
gslang的扩展类型,由用户通过编写.gs脚本定义:
表类型(table)
- table类型与c语言中的struct类似,字段的定义顺序暗示了序列化后的顺序;
- 默认的table类型实例中,各个字段不允许为空;
- table类型暂不支持默认值;
- table类型不支持递归定义;
- annotation是一类特殊的table类型;
table User {
string Name;
byte Age;
string Address;
}
枚举类型(enum)
与c++/c#的枚举类型有相同的含义:
// attribute target flag
@Flag
enum Target{
Module(1),Script(2),Table(4),Method(8),Param(16),Enum(32)
}
协议类型(contract)
contract类型定义rpc两端的交互协议,类似于其它语言中的interface概念:
- contract 可以包含多个方法,方法只支持单一返回值;
- contract 方法有一个可选的异常列表,异常类型由table定义并由gslang.Exception标注;
@Exception
table ResourceException{}
@Exception
table UnknownException{}
table IPV4 {
byte[4] Address;
}
contract DNSResolver {
IPV4 Resolve(string domain) throws(UnknownException,ResourceException);
}