This commit is contained in:
Cloud Wu
2017-08-18 14:28:27 +08:00
parent f94ca6f4b3
commit 53fef98acf

View File

@@ -8,6 +8,13 @@ local builder = {}
local cache = {} local cache = {}
local dataset = {} local dataset = {}
local address local address
local unique_id = 0
local function unique_string(str)
unique_id = unique_id + 1
return str .. "." .. tostring(unique_id)
end
local function monitor(pointer) local function monitor(pointer)
skynet.fork(function() skynet.fork(function()
skynet.call(address, "lua", "collect", pointer) skynet.call(address, "lua", "collect", pointer)
@@ -30,7 +37,7 @@ end
function builder.new(name, v) function builder.new(name, v)
assert(dataset[name] == nil) assert(dataset[name] == nil)
local datastring = dumpsheet(v) local datastring = unique_string(dumpsheet(v))
local pointer = core.stringpointer(datastring) local pointer = core.stringpointer(datastring)
skynet.call(address, "lua", "update", name, pointer) skynet.call(address, "lua", "update", name, pointer)
cache[datastring] = pointer cache[datastring] = pointer
@@ -41,7 +48,7 @@ end
function builder.update(name, v) function builder.update(name, v)
local lastversion = assert(dataset[name]) local lastversion = assert(dataset[name])
local newversion = dumpsheet(v) local newversion = dumpsheet(v)
local diff = dump.diff(lastversion, newversion) local diff = unique_string(dump.diff(lastversion, newversion))
local pointer = core.stringpointer(diff) local pointer = core.stringpointer(diff)
skynet.call(address, "lua", "update", name, pointer) skynet.call(address, "lua", "update", name, pointer)
cache[diff] = pointer cache[diff] = pointer