mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-24 12:20:41 +00:00
fix #718
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user