mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-22 02:53:09 +00:00
Merge pull request #491 from asanosoyokaze/patch-go
skynet.pcall support vararg; sharedata loader can use custom args
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user