lua 使用 protocolbuffer

protocolbuffer 简介

protocol buffer是google的一个开源项目,它是用于结构化数据串行化的灵活、高效、自动的方法,例如XML,不过它比xml更小、更快、也更简单。据测试比json还要快很多,你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的情况下更新数据结构,具体语法请参考Protocol Buffer使用简介

在lua中使用protocolbuffer

接下来我们进入正题,就是在lua中使用protocolbuffer,为了我让我们的游戏开发更快速,与服务器交互更方便,我们将在游戏lua脚本中使用protocolbuffer,但是google的protocolbuffer原生项目并不支持lua,但是我们有更多的牛人帮我实现了相关的支持,protoc-gen-lua是一个开源项目,这个是下载地址;下面就介绍怎么来使用protoc-gen-lua让我们的lua程序来使用pb。

1.安装

首先要配置环境,要安装python2.7下载地址:https://www.python.org/downloads/release/python-2713/

然后安装protocolbuffer 2.6 for  python下载地址:https://github.com/google/protobuf/releases具体的方法在此就不细说了

2.使用protoc-gen-lua

protoc-gen-lua目录下面有个plugin目录protoc-gen-lua和plugin_pb2.py是用来生成protocol的lua文件的

在win32下面:

先编写一个protoc-gen-lua.bat文件里面写上@python “%~dp0protoc-gen-lua”

我们可以 protoc.exe –lua_out=./ –plugin=protoc-gen-lua=”protoc-gen-lua.bat” PublicStruct.proto 命令来生成

在linux下面:

添加一个硬连 l protoc-gen-lua in your $PATH:

$cd /usr/local/bin && sudo ln -s /path/to/protoc-gen-lua/plugin/protoc-gen-lua

然后使用如下命令:

protoc --lua_out=./ PublicStruct.proto

生成PublicStruct_pb.lua的文件就是我们需要的

3.简单示例

你有一个protoc文件是这样的

person.proto :

[lua]
message Person {
required int32 id = 1;
required string name = 2;
optional string email = 3;
}
[/lua]

编译生成person_pb.lua 文件
然后在我们的lua工程中包含 protobuf 和c/c++工程中包含pb.c
在lua中使用我们的person_pb文件

 

[lua]
require "person_pb"

— Serialize Example
local msg = person_pb.Person()
msg.id = 100
msg.name = "foo"
msg.email = "bar"
local pb_data = msg:SerializeToString()

— Parse Example
local msg = person_pb.Person()
msg:ParseFromString(pb_data)
print(msg.id, msg.name, msg.email)
[/lua]

好了就这么多了