collect used response, see #800

This commit is contained in:
Cloud Wu
2018-02-04 16:25:19 +08:00
parent 084aab4bcd
commit 6cdc1cf95c
2 changed files with 41 additions and 2 deletions

View File

@@ -80,6 +80,24 @@ local function releasehandle(handle)
end end
end end
local function register_collector(name)
local function collect()
local m = dataset[name].monitor
local i = 1
while m[i] do
if not m[i] "TEST" then
local n = #m
m[i] = m[n]
m[n] = nil
else
i = i + 1
end
end
skynet.timeout(10 * 60 * 100, collect) -- 10 mins
end
collect()
end
-- from builder, create or update handle -- from builder, create or update handle
function datasheet.update(name, handle) function datasheet.update(name, handle)
local t = dataset[name] local t = dataset[name]
@@ -88,6 +106,7 @@ function datasheet.update(name, handle)
t = { handle = handle, monitor = {} } t = { handle = handle, monitor = {} }
dataset[name] = t dataset[name] = t
handles[handle] = { ref = 1, name = name } handles[handle] = { ref = 1, name = name }
register_collector(name)
else else
t.handle = handle t.handle = handle
-- report update to customers -- report update to customers

View File

@@ -1,6 +1,6 @@
local skynet = require "skynet" local skynet = require "skynet"
local builder = require "skynet.datasheet.builder"
local datasheet = require "skynet.datasheet" local mode = ...
local function dump(t, prefix) local function dump(t, prefix)
for k,v in pairs(t) do for k,v in pairs(t) do
@@ -11,8 +11,26 @@ local function dump(t, prefix)
end end
end end
if mode == "child" then
local datasheet = require "skynet.datasheet"
skynet.start(function()
local t = datasheet.query("foobar")
dump(t, "[CHILD]")
skynet.sleep(100)
skynet.exit()
end)
else
local builder = require "skynet.datasheet.builder"
local datasheet = require "skynet.datasheet"
skynet.start(function() skynet.start(function()
builder.new("foobar", {a = 1, b = 2 , c = {3} }) builder.new("foobar", {a = 1, b = 2 , c = {3} })
skynet.newservice(SERVICE_NAME, "child")
local t = datasheet.query "foobar" local t = datasheet.query "foobar"
local c = t.c local c = t.c
dump(t, "[1]") dump(t, "[1]")
@@ -26,3 +44,5 @@ skynet.start(function()
skynet.sleep(100) skynet.sleep(100)
dump(t, "[3]") dump(t, "[3]")
end) end)
end