-
Notifications
You must be signed in to change notification settings - Fork 70
/
Copy pathsample_pbc.lua
executable file
·51 lines (39 loc) · 1.78 KB
/
sample_pbc.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
--region sample_pbc.lua
--Author : owent
--Date : 2016/04/15
--启动载入项
-- 需要追加框架目录、数据根目和pbc的lua文件录到package.path, 如:
-- package.path=package.path .. ';../?.lua;/c/workspace/projs/github/owent-utils/lua/src/?.lua'
-- package.path=package.path .. ';/c/workspace/projs/github/owent-contrib/pbc/binding/lua/?.lua'
-- 还需要追加pbc的动态库所在目录到package.cpath, 如:
-- package.cpath=package.cpath .. ';/c/workspace/projs/github/owent-contrib/pbc/binding/lua/?.so'
local loader = require('utils.loader')
local class = loader.load('utils.class')
local cfg = loader.load('data.pbc_config_manager')
-- 加载pbc的lua文件,可以换成自己的路径
loader.load('protobuf')
local pbc = protobuf
-- 搜索模式为%s,如果设置为data.%s,则cfg:load('role_cfg') 会使用 require('data.role_cfg')
cfg:set_path_rule('%s')
-- 下面这个接口是在执行reload的时候会重新require的路径,可以在这个文件里重新读取配置
-- cfg:set_list('data.conf_list') -- cfg:reload() 会在清空配置数据后执行require('data.conf_list')
-- 读取文件数据
local cfg_file = io.open('../role_cfg.bin')
local cfg_buffer = cfg_file:read('*a')
cfg_file:close()
-- role_cfg
cfg:load_buffer_kv('role_cfg', cfg_buffer, function(k, v)
return v.id or k
end)
-- 别名
cfg:load_buffer_kv('role_cfg', cfg_buffer, function(k, v)
return v.id or k
end, 'alias_name')
-- 别名和非别名的数据一样的
vardump(cfg:get('role_cfg'):get(10002))
vardump(cfg:get('alias_name'):get(10002))
-- 设置为只读
cfg:set_readonly()
local kind = cfg:get('role_cfg'):get(10002)
vardump(kind)
print(string.format('kind id=%d, name=%s, dep_test.name=%s', kind.id, kind.name, kind.dep_test.name))