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