mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-22 02:53:09 +00:00
collect used response, see #800
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
Reference in New Issue
Block a user