mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-25 04:33:05 +00:00
feat: add sharetable queryall (#1536)
Co-authored-by: Jason <jie-email@jie-trancender.org>
This commit is contained in:
@@ -92,6 +92,16 @@ local function sharetable_service()
|
|||||||
skynet.ret(skynet.pack(ptr))
|
skynet.ret(skynet.pack(ptr))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function sharetable.queryall(source, filenamelist)
|
||||||
|
local ptrList = {}
|
||||||
|
for _, filename in ipairs(filenamelist) do
|
||||||
|
if files[filename] then
|
||||||
|
ptrList[filename] = query_file(source, filename)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
skynet.ret(skynet.pack(ptrList))
|
||||||
|
end
|
||||||
|
|
||||||
function sharetable.close(source)
|
function sharetable.close(source)
|
||||||
local list = clients[source]
|
local list = clients[source]
|
||||||
if list then
|
if list then
|
||||||
@@ -208,6 +218,21 @@ function sharetable.query(filename)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function sharetable.queryall(filenamelist)
|
||||||
|
local list, t, map = {}
|
||||||
|
local ptrList = skynet.call(sharetable.address, "lua", "queryall", filenamelist)
|
||||||
|
for filename, ptr in pairs(ptrList) do
|
||||||
|
t = core.clone(ptr)
|
||||||
|
map = RECORD[filename]
|
||||||
|
if not map then
|
||||||
|
map = {}
|
||||||
|
RECORD[filename] = map
|
||||||
|
end
|
||||||
|
map[t] = true
|
||||||
|
list[filename] = t
|
||||||
|
end
|
||||||
|
return list
|
||||||
|
end
|
||||||
|
|
||||||
local pairs = pairs
|
local pairs = pairs
|
||||||
local type = type
|
local type = type
|
||||||
|
|||||||
@@ -1,6 +1,17 @@
|
|||||||
local skynet = require "skynet"
|
local skynet = require "skynet"
|
||||||
local sharetable = require "skynet.sharetable"
|
local sharetable = require "skynet.sharetable"
|
||||||
|
|
||||||
|
local function queryall_test()
|
||||||
|
sharetable.loadtable("test_one", {["message"] = "hello one", x = 1, 1})
|
||||||
|
sharetable.loadtable("test_two", {["message"] = "hello two", x = 2, 2})
|
||||||
|
local list = sharetable.queryall({"test_one", "test_two"})
|
||||||
|
for filename, tbl in pairs(list) do
|
||||||
|
for k, v in pairs(tbl) do
|
||||||
|
print(filename, k, v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
skynet.start(function()
|
skynet.start(function()
|
||||||
-- You can also use sharetable.loadfile / sharetable.loadstring
|
-- You can also use sharetable.loadfile / sharetable.loadstring
|
||||||
sharetable.loadtable ("test", { x=1,y={ 'hello world' },['hello world'] = true })
|
sharetable.loadtable ("test", { x=1,y={ 'hello world' },['hello world'] = true })
|
||||||
@@ -13,4 +24,6 @@ skynet.start(function()
|
|||||||
for k,v in pairs(t) do
|
for k,v in pairs(t) do
|
||||||
print(k,v)
|
print(k,v)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
queryall_test()
|
||||||
end)
|
end)
|
||||||
|
|||||||
Reference in New Issue
Block a user