pbc
pbc copied to clipboard
热更新pb
我们在项目中用了pbc来和客户端交互,在个别情况下,策划可能需要对协议做一些热更新(比如在客户端多显示一个XX值) pbc有办法将register到环境里的数据删掉重新register一遍么?或者直接更新的方法
你重新生成一个新的 pbc_env 结构不就行了.
@cloudwu 你好, 我按照您的方式在protobuf.lua这样做: function register( buffer) if P ~= nil then P = c._env_new() GC = c._gc(P) print("register new proto") end c._env_register(P, buffer) end
但是实际看起来会有很多问题,假如这样使用: A = decode("X") Reload() collectgarbage("collect") B = decode("X") B.xxx --coredump! 看起来B指向了已经释放掉的default_table, 当使用B.xxx就会core掉?
这个库不再维护,你可以想其它方法解决问题。
就上面的代码来说,你不能解除老的版本的 GC 对象。只要引用住应该就没问题。