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
local function ret(f, ...)
f()
return ...
end
local function init_template(start)
init_all()
init_func = {}
start()
init_all()
return ret(init_all, start())
end
function skynet.pcall(start)

View File

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