Merge pull request #509 from dpull/master

重新设计debug.lua接口
This commit is contained in:
云风
2016-06-12 16:41:18 +08:00
committed by GitHub
2 changed files with 97 additions and 88 deletions

View File

@@ -663,7 +663,7 @@ end
-- Inject internal debug framework
local debug = require "skynet.debug"
debug(skynet, {
debug.init(skynet, {
dispatch = skynet.dispatch_message,
suspend = suspend,
})

View File

@@ -1,8 +1,7 @@
local table = table
local extern_dbgcmd = {};
return function (skynet, export)
local extern_dbgcmd = {}
local function init(skynet, export)
local internal_info_func
function skynet.info_func(func)
@@ -12,7 +11,7 @@ end
local dbgcmd
local function init_dbgcmd()
dbgcmd = extern_dbgcmd
dbgcmd = {}
function dbgcmd.MEM()
local kb, bytes = collectgarbage "count"
@@ -20,6 +19,7 @@ function dbgcmd.MEM()
end
function dbgcmd.GC()
collectgarbage "collect"
end
@@ -80,7 +80,8 @@ return dbgcmd
end -- function init_dbgcmd
local function _debug_dispatch(session, address, cmd, ...)
local f = (dbgcmd or init_dbgcmd())[cmd] -- lazy init dbgcmd
dbgcmd = dbgcmd or init_dbgcmd() -- lazy init dbgcmd
local f = dbgcmd[cmd] or extern_dbgcmd[cmd]
assert(f, cmd)
f(...)
end
@@ -92,5 +93,13 @@ skynet.register_protocol {
unpack = assert(skynet.unpack),
dispatch = _debug_dispatch,
}
end
local function reg_debugcmd(name, fn)
extern_dbgcmd[name] = fn
end
return {
init = init,
reg_debugcmd = reg_debugcmd,
}