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))