约 123 字 预计阅读 1 分钟
skynet:debug console添加搜索功能
为什么要给skynet的debug console添加搜索功能?
- 使用skynet一段时间后,发现,在动态创建skynet service的情况下,如果service很多,有时很难找到我们想要找到我们要找的那个skynet服务,用skynet的list命令会罗列所有的服务,因此我们需要像grep,ag这样的命令功能来搜索skynet的服务。
实现搜索命令ag
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
local function get_all_list(key_string)
local table_list={}
local all_services = skynet.call(".launcher", "lua", "LIST")
local count = 0
for k,v in pairs(all_services) do
if string.match(k, key_string) or string.match(v, key_string) then
table_list[k] = v
count = count + 1
end
end
table_list["total_count"] = count
return table_list
end
function COMMAND.ag(key_string)
if key_string == nil then
skynet.error("ag nil string:")
return nil
end
skynet.error("ag:",key_string)
return get_all_list(key_string)
end
|
1
2
3
4
5
|
ag vip
:0000003b snlua vip_service
:0000003c snlua vip_agent 1
total_count 2
<CMD OK>
|
1
2
3
4
|
ag 3b
:0000003b snlua vip_service
total_count 1
<CMD OK>
|