| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- --- 模块功能:protobuffer测试
- -- @author openLuat
- -- @module lbsLoc.testLbsLoc
- -- @license MIT
- -- @copyright openLuat
- -- @release 2018.03.23
- --以下为简单的测试,移植的是lua_protobuffer库,详细的接口可以参考:https://github.com/starwing/lua-protobuf
- --local pb = require "lua_protobuf"
- --local conv = require "pb.conv"
- require"utils"
- sys.taskInit(function ()
- sys.wait(2000)
- print('lua_protobuffer test start .............')
- --proto2测试
- --[[
- pb.loadfile("/lua/addressbook.pb")
- local addressBook =
- {
- name = "Alice",
- id = 12345,
- phone =
- {
- {number = "1301234567"},
- {number = "87654321", type = "WORK"},
- {number = "13912345678", type = "MOBILE"},
- },
- email = "username@domain.com"
- }
- -- 序列化成二进制数据
- local data = pb.encode("tutorial.Person", addressBook)
- log.info("protobuf.encode",data:toHex())
- -- 从二进制数据解析出实际消息
- local msg = pb.decode("tutorial.Person", data)
- -- 这里调用了serpent库,用于序列化打印table数据,实际生产可不包含
- print(require "serpent".block(msg))
- ]]
- --proto3 test
- local tracker = {
- query = "www",
- page_number = 8,
- result_per_page = 100,
- }
- lua_protobuf.loadfile("/lua/tracker.pb")
- --[[pb Module test]]--
- --设置启用hook函数选项
- print(lua_protobuf.option("enable_hooks"))
- lua_protobuf.hook("tracker.SearchRequest", function()
- print("decode sucess")
- end)
- -- 序列化成二进制数据
- local data = lua_protobuf.encode("tracker.SearchRequest", tracker)
- log.info("protobuf.encode",data:toHex())
- -- 从二进制数据解析出实际消息
- local msg = lua_protobuf.decode("tracker.SearchRequest", data)
- -- 这里调用了serpent库,用于序列化打印table数据,实际生产可不包含
- print(require "serpent".block(msg))
- --pb.(type|field)[s]()获取指定类型||字段的信息
- print(lua_protobuf.type("tracker.SearchRequest"))
- -- list all types that loaded into pb
- for name, basename, type in lua_protobuf.types() do
- print(name, basename, type)
- end
- print(lua_protobuf.field("tracker.SearchRequest", "query"))
- -- notice that you needn't receive all return values from iterator
- for name, number, type in lua_protobuf.fields "tracker.SearchRequest" do
- print(name, number, type)
- end
- --将字段的类型名转换为打包/解包格式化程序
- print(lua_protobuf.typefmt("tracker.SearchRequest"))
- --获取类型的默认表
- print(lua_protobuf.defaults("tracker.SearchRequest"))
- --获取当前pb状态值
- local statu = lua_protobuf.state()
- print(statu)
- --[[pb.conv Module test]]--
- print('pb.conv Module test start .............')
- print(pb.conv.encode_int32(32))
- print(pb.conv.encode_uint32(64))
- local s32 = pb.conv.encode_sint32(-100)
- print(pb.conv.decode_sint32(s32))
- local s64 = pb.conv.encode_sint64(-1000000000000)
- print(pb.conv.decode_sint64(s64))
- local flo = pb.conv.encode_float(10.55)
- print(pb.conv.decode_float(flo))
- local doubl = pb.conv.encode_double(10.55)
- print(pb.conv.decode_double(doubl))
- end
- )
|