48 lines
1.0 KiB
Lua
48 lines
1.0 KiB
Lua
require "protobuf"
|
|
|
|
path = Application.dataPath;
|
|
addr = io.open(path.."/pbc/addressbook.pb", "rb")
|
|
buffer = addr:read "*a"
|
|
addr:close()
|
|
|
|
protobuf.register(buffer)
|
|
|
|
t = protobuf.decode("google.protobuf.FileDescriptorSet", buffer)
|
|
|
|
proto = t.file[1]
|
|
|
|
print(proto.name)
|
|
print(proto.package)
|
|
|
|
message = proto.message_type
|
|
|
|
for _,v in ipairs(message) do
|
|
print(v.name)
|
|
for _,v in ipairs(v.field) do
|
|
print("\t".. v.name .. " ["..v.number.."] " .. v.label)
|
|
end
|
|
end
|
|
|
|
addressbook = {
|
|
name = "Alice",
|
|
id = 12345,
|
|
phone = {
|
|
{ number = "1301234567" },
|
|
{ number = "87654321", type = "WORK" },
|
|
}
|
|
}
|
|
|
|
code = protobuf.encode("tutorial.Person", addressbook)
|
|
|
|
decode = protobuf.decode("tutorial.Person" , code)
|
|
|
|
print(decode.name)
|
|
print(decode.id)
|
|
for _,v in ipairs(decode.phone) do
|
|
print("\t"..v.number, v.type)
|
|
end
|
|
|
|
phonebuf = protobuf.pack("tutorial.Person.PhoneNumber number","87654321")
|
|
buffer = protobuf.pack("tutorial.Person name id phone", "Alice", 123, { phonebuf })
|
|
print(protobuf.unpack("tutorial.Person name id phone", buffer))
|