feat: add sharetable queryall (#1536)

Co-authored-by: Jason <jie-email@jie-trancender.org>
This commit is contained in:
JTrancender
2022-02-15 21:01:54 +08:00
committed by GitHub
parent b13281b77d
commit 40ee98b40e
2 changed files with 38 additions and 0 deletions

View File

@@ -92,6 +92,16 @@ local function sharetable_service()
skynet.ret(skynet.pack(ptr))
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)
local list = clients[source]
if list then
@@ -208,6 +218,21 @@ function sharetable.query(filename)
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 type = type

View File

@@ -1,6 +1,17 @@
local skynet = require "skynet"
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()
-- You can also use sharetable.loadfile / sharetable.loadstring
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
print(k,v)
end
queryall_test()
end)