test.lua 1005 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. require "protobuf"
  2. addr = io.open("../../build/addressbook.pb","rb")
  3. buffer = addr:read "*a"
  4. addr:close()
  5. protobuf.register(buffer)
  6. t = protobuf.decode("google.protobuf.FileDescriptorSet", buffer)
  7. proto = t.file[1]
  8. print(proto.name)
  9. print(proto.package)
  10. message = proto.message_type
  11. for _,v in ipairs(message) do
  12. print(v.name)
  13. for _,v in ipairs(v.field) do
  14. print("\t".. v.name .. " ["..v.number.."] " .. v.label)
  15. end
  16. end
  17. addressbook = {
  18. name = "Alice",
  19. id = 12345,
  20. phone = {
  21. { number = "1301234567" },
  22. { number = "87654321", type = "WORK" },
  23. }
  24. }
  25. code = protobuf.encode("tutorial.Person", addressbook)
  26. decode = protobuf.decode("tutorial.Person" , code)
  27. print(decode.name)
  28. print(decode.id)
  29. for _,v in ipairs(decode.phone) do
  30. print("\t"..v.number, v.type)
  31. end
  32. phonebuf = protobuf.pack("tutorial.Person.PhoneNumber number","87654321")
  33. buffer = protobuf.pack("tutorial.Person name id phone", "Alice", 123, { phonebuf })
  34. print(protobuf.unpack("tutorial.Person name id phone", buffer))