From eaba8f969c177aaf190bce40723e55827452d90c Mon Sep 17 00:00:00 2001 From: JTrancender Date: Wed, 16 Feb 2022 11:22:59 +0800 Subject: [PATCH] perf: add sharetable queryall default behavior(all share data) (#1537) --- lualib/skynet/sharetable.lua | 18 ++++++++++++++++-- test/testsharetable.lua | 9 +++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/lualib/skynet/sharetable.lua b/lualib/skynet/sharetable.lua index 0c1329a9..31028c73 100644 --- a/lualib/skynet/sharetable.lua +++ b/lualib/skynet/sharetable.lua @@ -92,13 +92,27 @@ local function sharetable_service() skynet.ret(skynet.pack(ptr)) end - function sharetable.queryall(source, filenamelist) - local ptrList = {} + local function querylist(source, filenamelist) + local ptrList = {} for _, filename in ipairs(filenamelist) do if files[filename] then ptrList[filename] = query_file(source, filename) end end + return ptrList + end + + local function queryall(source) + local ptrList = {} + for filename in pairs(files) do + ptrList[filename] = query_file(source, filename) + end + return ptrList + end + + function sharetable.queryall(source, filenamelist) + local queryFunc = filenamelist and querylist or queryall + local ptrList = queryFunc(source, filenamelist) skynet.ret(skynet.pack(ptrList)) end diff --git a/test/testsharetable.lua b/test/testsharetable.lua index 64fe83ea..c8ba8e5c 100644 --- a/test/testsharetable.lua +++ b/test/testsharetable.lua @@ -4,12 +4,21 @@ 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}) + sharetable.loadtable("test_three", {["message"] = "hello three", x = 3, 3}) 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 + + print("test queryall default") + local defaultlist = sharetable.queryall() + for filename, tbl in pairs(defaultlist) do + for k, v in pairs(tbl) do + print(filename, k, v) + end + end end skynet.start(function()