笔记:云风pbc的protobuf.lua文件下register方法用法

1 篇文章 0 订阅
1 篇文章 0 订阅

今天重装quick-cocos, 因为项目要运用protobuf协议,所以将云风的pbc源码下载下来编译进player内,以前集成protobuf到quick-cocos操作过不少,但一直有个关于pbc下的protobuf.lua文件的register()参数问题没有细究,今天借以闲暇终于探了个究竟:

protobuf.lua文件的register()方法(lua):

function register( buffer)
c._env_register(P, buffer)
end

c._env_register(P, buffer)的实现(c代码):

_env_register(lua_State *L) {
struct pbc_env * env = (struct pbc_env *)checkuserdata(L,1);
size_t sz = 0;
const char * buffer = luaL_checklstring(L, 2 , &sz);
struct pbc_slice slice;
slice.buffer = (void *)buffer;
slice.len = (int)sz;
int ret = pbc_register(env, &slice);


if (ret) {
return luaL_error(L, "register fail");
}
return 0;
}

rester该方法仅需传入一个参数buffer,buffer为需要注册的.pb文件数据,从_env_register我们可以看出它需要的数据类型为const char* 类型,因.pb文件为二进制格式文件,所以我们读取.pb文件数据时需要要以二进制编码格式去读:

local protobuf  = require "protobuf"

local f = io.open(pb_path, "rb")

if f then

 local buff = f:read("*a")

 protobuf.register(buff)

f:close()

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值