Merge pull request #491 from asanosoyokaze/patch-go

skynet.pcall support vararg; sharedata loader can use custom args
This commit is contained in:
cloudwu
2016-04-27 21:44:59 +08:00
3 changed files with 12 additions and 12 deletions

View File

@@ -28,12 +28,12 @@ function sharedata.query(name)
return r
end
function sharedata.new(name, v)
skynet.call(service, "lua", "new", name, v)
function sharedata.new(name, v, ...)
skynet.call(service, "lua", "new", name, v, ...)
end
function sharedata.update(name, v)
skynet.call(service, "lua", "update", name, v)
function sharedata.update(name, v, ...)
skynet.call(service, "lua", "update", name, v, ...)
end
function sharedata.delete(name)

View File

@@ -611,14 +611,14 @@ local function ret(f, ...)
return ...
end
local function init_template(start)
local function init_template(start, ...)
init_all()
init_func = {}
return ret(init_all, start())
return ret(init_all, start(...))
end
function skynet.pcall(start)
return xpcall(init_template, debug.traceback, start)
function skynet.pcall(start, ...)
return xpcall(init_template, debug.traceback, start, ...)
end
function skynet.init_service(start)

View File

@@ -38,7 +38,7 @@ local CMD = {}
local env_mt = { __index = _ENV }
function CMD.new(name, t)
function CMD.new(name, t, ...)
local dt = type(t)
local value
if dt == "table" then
@@ -51,7 +51,7 @@ function CMD.new(name, t)
else
f = assert(load(t, "=" .. name, "bt", value))
end
local _, ret = assert(skynet.pcall(f))
local _, ret = assert(skynet.pcall(f, ...))
setmetatable(value, nil)
if type(ret) == "table" then
value = ret
@@ -90,7 +90,7 @@ function CMD.confirm(cobj)
return NORET
end
function CMD.update(name, t)
function CMD.update(name, t, ...)
local v = pool[name]
local watch, oldcobj
if v then
@@ -101,7 +101,7 @@ function CMD.update(name, t)
pool[name] = nil
pool_count[name] = nil
end
CMD.new(name, t)
CMD.new(name, t, ...)
local newobj = pool[name].obj
if watch then
sharedata.host.markdirty(oldcobj)