mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-22 02:53:09 +00:00
44 lines
872 B
Lua
44 lines
872 B
Lua
local skynet = require "skynet"
|
|
local sd = require "sharedata.corelib"
|
|
|
|
local service
|
|
|
|
skynet.init(function()
|
|
service = skynet.uniqueservice "sharedatad"
|
|
end)
|
|
|
|
local sharedata = {}
|
|
|
|
local function monitor(name, obj, cobj)
|
|
local newobj = cobj
|
|
while true do
|
|
newobj = skynet.call(service, "lua", "monitor", name, newobj)
|
|
if newobj == nil then
|
|
break
|
|
end
|
|
sd.update(obj, newobj)
|
|
end
|
|
end
|
|
|
|
function sharedata.query(name)
|
|
local obj = skynet.call(service, "lua", "query", name)
|
|
local r = sd.box(obj)
|
|
skynet.send(service, "lua", "confirm" , obj)
|
|
skynet.fork(monitor,name, r, obj)
|
|
return r
|
|
end
|
|
|
|
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)
|
|
end
|
|
|
|
function sharedata.delete(name)
|
|
skynet.call(service, "lua", "delete", name)
|
|
end
|
|
|
|
return sharedata
|