Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.2 KiB
49 lines
1.2 KiB
|
|
require "upb" |
|
|
|
symtab = upb.symtab() |
|
|
|
f = io.open("../../src/descriptor.pb") |
|
if not f then |
|
error("Couldn't open descriptor.pb, try running 'make descriptorgen'") |
|
end |
|
symtab:parsedesc(f:read("*all")) |
|
|
|
f = io.open("../../benchmarks/google_messages.proto.pb") |
|
if not f then |
|
error("Couldn't open google_messages.proto.pb, try running 'make benchmarks'") |
|
end |
|
symtab:parsedesc(f:read("*all")) |
|
|
|
for _, def in ipairs(symtab:getdefs(-1)) do |
|
print(def:name()) |
|
end |
|
|
|
SpeedMessage1 = symtab:lookup("benchmarks.SpeedMessage1") |
|
SpeedMessage2 = symtab:lookup("benchmarks.SpeedMessage2") |
|
print(SpeedMessage1:name()) |
|
|
|
msg = SpeedMessage1() |
|
f = assert(io.open("../../benchmarks/google_message1.dat")) |
|
msg:Parse(f:read("*all")) |
|
print(msg:ToText()) |
|
|
|
msg = SpeedMessage2() |
|
f = assert(io.open("../../benchmarks/google_message2.dat")) |
|
msg:Parse(f:read("*all")) |
|
print(msg:ToText()) |
|
--msg:Serialize() |
|
--msg:FromText(str) |
|
-- print(msg.field129) |
|
-- print(msg.field271) |
|
--print(msg.field15.field15) |
|
--msg.field15.field15 = "my override" |
|
--print(msg.field15.field15) |
|
-- print(msg.field1) |
|
-- print(msg.field1) |
|
-- msg.field1 = "YEAH BABY!" |
|
-- print(msg.field1) |
|
-- print(msg.field129) |
|
-- msg.field129 = 5 |
|
-- print(msg.field129) |
|
|
|
|