sharedata support filename string

This commit is contained in:
Cloud Wu
2015-10-28 17:37:06 +08:00
parent 935863f434
commit 0199ba1382
2 changed files with 18 additions and 4 deletions

View File

@@ -608,11 +608,15 @@ local function init_all()
end end
end end
local function ret(f, ...)
f()
return ...
end
local function init_template(start) local function init_template(start)
init_all() init_all()
init_func = {} init_func = {}
start() return ret(init_all, start())
init_all()
end end
function skynet.pcall(start) function skynet.pcall(start)

View File

@@ -1,6 +1,8 @@
local skynet = require "skynet" local skynet = require "skynet"
local sharedata = require "sharedata.corelib" local sharedata = require "sharedata.corelib"
local table = table local table = table
local cache = require "skynet.codecache"
cache.mode "OFF" -- turn off codecache, because CMD.new may load data file
local NORET = {} local NORET = {}
local pool = {} local pool = {}
@@ -43,9 +45,17 @@ function CMD.new(name, t)
value = t value = t
elseif dt == "string" then elseif dt == "string" then
value = setmetatable({}, env_mt) value = setmetatable({}, env_mt)
local f = load(t, "=" .. name, "t", value) local f
assert(skynet.pcall(f)) if t:sub(1,1) == "@" then
f = assert(loadfile(t:sub(2),"bt",value))
else
f = assert(load(t, "=" .. name, "bt", value))
end
local _, ret = assert(skynet.pcall(f))
setmetatable(value, nil) setmetatable(value, nil)
if type(ret) == "table" then
value = ret
end
elseif dt == "nil" then elseif dt == "nil" then
value = {} value = {}
else else