PageRenderTime 49ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/binding/lua/testparser.lua

http://github.com/cloudwu/pbc
Lua | 57 lines | 44 code | 12 blank | 1 comment | 2 complexity | ccb230457bb1db41ac08b2c46db41f7b MD5 | raw file
  1. protobuf = require "protobuf"
  2. parser = require "parser"
  3. t = parser.register("addressbook.proto","../../test")
  4. local addressbook1 = {
  5. name = "Alice",
  6. id = 12345,
  7. phone = {
  8. { number = "1301234567" },
  9. { number = "87654321", type = "WORK" },
  10. { number = "13912345678", type = "MOBILE" },
  11. },
  12. email = "username@domain.com"
  13. }
  14. local addressbook2 = {
  15. name = "Bob",
  16. id = 12346,
  17. phone = {
  18. { number = "1301234568" },
  19. { number = "98765432", type = "HOME" },
  20. { number = "13998765432", type = "MOBILE" },
  21. }
  22. }
  23. code1 = protobuf.encode("tutorial.Person", addressbook1)
  24. code2 = protobuf.encode("tutorial.Person", addressbook2)
  25. decode1 = protobuf.decode("tutorial.Person" , code1)
  26. -- BUG [ISSUE#27](https://github.com/cloudwu/pbc/issues/27)
  27. decode1.profile.nick_name = "AHA"
  28. decode1.profile.icon = "id:1"
  29. decode2 = protobuf.decode("tutorial.Person" , code2)
  30. function print_addr(decoded)
  31. print(string.format('ID: %d, Name: %s, Email: %s', decoded.id, decoded.name, tostring(decoded.email)))
  32. if decoded.profile then
  33. print(string.format('\tNickname: %s, Icon: %s', tostring(decoded.profile.nick_name), tostring(decoded.profile.icon)))
  34. end
  35. for k, v in ipairs(decoded.phone) do
  36. print(string.format("\tPhone NO.%s: %16s %s", k, v.number, tostring(v.type)))
  37. end
  38. end
  39. print_addr(decode1)
  40. print_addr(decode2)
  41. buffer = protobuf.pack("tutorial.Person name id", "Alice", 123)
  42. print(protobuf.unpack("tutorial.Person name id", buffer))
  43. code_phone = protobuf.encode("tutorial.Person.PhoneNumber", { number = "18612345678" })
  44. decode_phone = protobuf.decode("tutorial.Person.PhoneNumber" , code_phone)
  45. print(string.format("Phone: %16s %s", decode_phone.number, tostring(decode_phone.type)))