diff --git a/lualib/sharedata.lua b/lualib/sharedata.lua index 58ecf28d..93ead44d 100644 --- a/lualib/sharedata.lua +++ b/lualib/sharedata.lua @@ -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) diff --git a/lualib/skynet.lua b/lualib/skynet.lua index 5064c7ae..e7fe27f4 100644 --- a/lualib/skynet.lua +++ b/lualib/skynet.lua @@ -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) diff --git a/service/sharedatad.lua b/service/sharedatad.lua index 1ae9022c..3f86155b 100644 --- a/service/sharedatad.lua +++ b/service/sharedatad.lua @@ -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)