mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-25 12:43:09 +00:00
add skynet.context and enhance debug console command service
This commit is contained in:
@@ -439,6 +439,12 @@ function skynet.ret(msg, sz)
|
|||||||
return ret
|
return ret
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function skynet.context()
|
||||||
|
local co_session = session_coroutine_id[running_thread]
|
||||||
|
local co_address = session_coroutine_address[running_thread]
|
||||||
|
return co_session, co_address
|
||||||
|
end
|
||||||
|
|
||||||
function skynet.ignoreret()
|
function skynet.ignoreret()
|
||||||
-- We use session for other uses
|
-- We use session for other uses
|
||||||
session_coroutine_id[running_thread] = nil
|
session_coroutine_id[running_thread] = nil
|
||||||
@@ -782,6 +788,14 @@ function skynet.stat(what)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function skynet.task(ret)
|
function skynet.task(ret)
|
||||||
|
if type(ret) == "number" then
|
||||||
|
local co = session_id_coroutine[ret]
|
||||||
|
if co then
|
||||||
|
return debug.traceback(co)
|
||||||
|
else
|
||||||
|
return "No session"
|
||||||
|
end
|
||||||
|
end
|
||||||
local t = 0
|
local t = 0
|
||||||
for session,co in pairs(session_id_coroutine) do
|
for session,co in pairs(session_id_coroutine) do
|
||||||
if ret then
|
if ret then
|
||||||
|
|||||||
@@ -32,10 +32,14 @@ local function init(skynet, export)
|
|||||||
skynet.ret(skynet.pack(stat))
|
skynet.ret(skynet.pack(stat))
|
||||||
end
|
end
|
||||||
|
|
||||||
function dbgcmd.TASK()
|
function dbgcmd.TASK(session)
|
||||||
local task = {}
|
if session then
|
||||||
skynet.task(task)
|
skynet.ret(skynet.pack(skynet.task(session)))
|
||||||
skynet.ret(skynet.pack(task))
|
else
|
||||||
|
local task = {}
|
||||||
|
skynet.task(task)
|
||||||
|
skynet.ret(skynet.pack(task))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function dbgcmd.INFO(...)
|
function dbgcmd.INFO(...)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ local function request(name, func, ...)
|
|||||||
end
|
end
|
||||||
|
|
||||||
for _,v in ipairs(s) do
|
for _,v in ipairs(s) do
|
||||||
skynet.wakeup(v)
|
skynet.wakeup(v.co)
|
||||||
end
|
end
|
||||||
|
|
||||||
if ok then
|
if ok then
|
||||||
@@ -47,7 +47,12 @@ local function waitfor(name , func, ...)
|
|||||||
return request(name, func, ...)
|
return request(name, func, ...)
|
||||||
end
|
end
|
||||||
|
|
||||||
table.insert(s, co)
|
local session, source = skynet.context()
|
||||||
|
table.insert(s, {
|
||||||
|
co = co,
|
||||||
|
session = session,
|
||||||
|
source = source,
|
||||||
|
})
|
||||||
skynet.wait()
|
skynet.wait()
|
||||||
s = service[name]
|
s = service[name]
|
||||||
if type(s) == "string" then
|
if type(s) == "string" then
|
||||||
@@ -91,7 +96,11 @@ local function list_service()
|
|||||||
if type(v) == "string" then
|
if type(v) == "string" then
|
||||||
v = "Error: " .. v
|
v = "Error: " .. v
|
||||||
elseif type(v) == "table" then
|
elseif type(v) == "table" then
|
||||||
v = "Querying"
|
local querying = { "Querying:" }
|
||||||
|
for _, detail in ipairs(v) do
|
||||||
|
table.insert(querying, skynet.address(detail.source) .. " " .. tostring(skynet.call(detail.source, "debug", "TASK", detail.session)))
|
||||||
|
end
|
||||||
|
v = table.concat(querying, "\n")
|
||||||
else
|
else
|
||||||
v = skynet.address(v)
|
v = skynet.address(v)
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user