Protocol Buffers Lua API總結 -- 內建型別的repeated使用append() 複合型別的repeated使用add()
阿新 • • 發佈:2019-01-25
本文介紹的關於protocol buffers的api是基於protoc-gen-lua
(see
in github)這個專案的。
我的使用經驗都是在開發Cocosd-x遊戲的時候,lua指令碼與伺服器通訊採用了protocol buffer
,協議編譯工具正是protoc-gen-lua這個外掛。外掛的安裝過程該專案的ReadMe已經描述的很清楚,這裡主要總結一下實際使用中需要注意的問題,和編譯生成的pb.lua
的常用API。
基本用法
1.定義一個.proto檔案,假設叫做Test.protomessage Test {
required int32 id = 1;
optional string name = 2;
repeated int32 ary = 3;
message Foo {
required int32 fid = 1;
required string fname = 2;
}
repeated Foo foos = 4;
}
protoc --lua_out=./ Test.proto
在專案中require(“Test_pb”)
-- 如果require失敗,請參考lua中`package.path`的使用
local pb =require("Test_pb")
local test = pb.Test()
test.id = 1
test.name = "hello"
test.ary:append(1) -- 內建型別的repeated使用append()
test.ary:append(2)
local foo1 = pb.foos:add() -- 複合型別的repeated使用add()
foo1.fid = 1
foo1.fname = "foo1"
local foo2 = pb.foos:add()
foo2.fid = 2
foo2.fname = "foo2"
-- 序列化為字串
local pb_data =test:SerializeToString()
-- 從字串解析
local recover = pb.Test()
recover:ParseFromString(pb_data)
print(recover.id, recover.foos[1].name, recover.foos[2].na
local pb =require("Test_pb")
local test = pb.Test()
test.id = 1
test.name = "hello"
test.ary:append(1) -- 內建型別的repeated使用append()
test.ary:append(2)
local foo1 = pb.foos:add() -- 複合型別的repeated使用add()
foo1.fid = 1
foo1.fname = "foo1"
local foo2 = pb.foos:add()
foo2.fid = 2
foo2.fname = "foo2"
-- 序列化為字串
local pb_data =test:SerializeToString()
-- 從字串解析
local recover = pb.Test()
recover:ParseFromString(pb_data)
print(recover.id, recover.foos[1].name, recover.foos[2].na