mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-23 19:43:09 +00:00
detect console fd closed
This commit is contained in:
@@ -52,13 +52,10 @@ end
|
||||
local function docmd(cmdline, print, fd)
|
||||
local split = split_cmdline(cmdline)
|
||||
local command = split[1]
|
||||
if command == "debug" then
|
||||
table.insert(split, fd)
|
||||
end
|
||||
local cmd = COMMAND[command]
|
||||
local ok, list
|
||||
if cmd then
|
||||
ok, list = pcall(cmd, select(2,table.unpack(split)))
|
||||
ok, list = pcall(cmd, fd, select(2,table.unpack(split)))
|
||||
else
|
||||
print("Invalid command, type help for command list")
|
||||
end
|
||||
@@ -79,18 +76,21 @@ local function docmd(cmdline, print, fd)
|
||||
end
|
||||
|
||||
local function console_main_loop(stdin, print)
|
||||
socket.lock(stdin)
|
||||
print("Welcome to skynet console")
|
||||
while true do
|
||||
local cmdline = socket.readline(stdin, "\n")
|
||||
if not cmdline then
|
||||
break
|
||||
skynet.error(stdin, "connected")
|
||||
pcall(function()
|
||||
while true do
|
||||
local cmdline = socket.readline(stdin, "\n")
|
||||
if not cmdline then
|
||||
break
|
||||
end
|
||||
if cmdline ~= "" then
|
||||
docmd(cmdline, print, stdin)
|
||||
end
|
||||
end
|
||||
if cmdline ~= "" then
|
||||
docmd(cmdline, print, stdin)
|
||||
end
|
||||
end
|
||||
socket.unlock(stdin)
|
||||
end)
|
||||
skynet.error(stdin, "disconnected")
|
||||
socket.close(stdin)
|
||||
end
|
||||
|
||||
skynet.start(function()
|
||||
@@ -140,7 +140,7 @@ function COMMAND.clearcache()
|
||||
codecache.clear()
|
||||
end
|
||||
|
||||
function COMMAND.start(...)
|
||||
function COMMAND.start(fd, ...)
|
||||
local ok, addr = pcall(skynet.newservice, ...)
|
||||
if ok then
|
||||
return { [skynet.address(addr)] = ... }
|
||||
@@ -149,7 +149,7 @@ function COMMAND.start(...)
|
||||
end
|
||||
end
|
||||
|
||||
function COMMAND.log(...)
|
||||
function COMMAND.log(fd, ...)
|
||||
local ok, addr = pcall(skynet.call, ".launcher", "lua", "LOGLAUNCH", "snlua", ...)
|
||||
if ok then
|
||||
return { [skynet.address(addr)] = ... }
|
||||
@@ -158,7 +158,7 @@ function COMMAND.log(...)
|
||||
end
|
||||
end
|
||||
|
||||
function COMMAND.snax(...)
|
||||
function COMMAND.snax(fd, ...)
|
||||
local ok, s = pcall(snax.newservice, ...)
|
||||
if ok then
|
||||
local addr = s.handle
|
||||
@@ -191,7 +191,7 @@ function COMMAND.mem()
|
||||
return skynet.call(".launcher", "lua", "MEM")
|
||||
end
|
||||
|
||||
function COMMAND.kill(address)
|
||||
function COMMAND.kill(fd, address)
|
||||
return skynet.call(".launcher", "lua", "KILL", address)
|
||||
end
|
||||
|
||||
@@ -199,11 +199,11 @@ function COMMAND.gc()
|
||||
return skynet.call(".launcher", "lua", "GC")
|
||||
end
|
||||
|
||||
function COMMAND.exit(address)
|
||||
function COMMAND.exit(fd, address)
|
||||
skynet.send(adjust_address(address), "debug", "EXIT")
|
||||
end
|
||||
|
||||
function COMMAND.inject(address, filename)
|
||||
function COMMAND.inject(fd, address, filename)
|
||||
address = adjust_address(address)
|
||||
local f = io.open(filename, "rb")
|
||||
if not f then
|
||||
@@ -214,17 +214,17 @@ function COMMAND.inject(address, filename)
|
||||
return skynet.call(address, "debug", "RUN", source, filename)
|
||||
end
|
||||
|
||||
function COMMAND.task(address)
|
||||
function COMMAND.task(fd, address)
|
||||
address = adjust_address(address)
|
||||
return skynet.call(address,"debug","TASK")
|
||||
end
|
||||
|
||||
function COMMAND.info(address)
|
||||
function COMMAND.info(fd, address)
|
||||
address = adjust_address(address)
|
||||
return skynet.call(address,"debug","INFO")
|
||||
end
|
||||
|
||||
function COMMAND.debug(address, fd)
|
||||
function COMMAND.debug(fd, address)
|
||||
address = adjust_address(address)
|
||||
local agent = skynet.newservice "debug_agent"
|
||||
local stop
|
||||
@@ -243,17 +243,17 @@ function COMMAND.debug(address, fd)
|
||||
stop = true
|
||||
end
|
||||
|
||||
function COMMAND.logon(address)
|
||||
function COMMAND.logon(fd, address)
|
||||
address = adjust_address(address)
|
||||
core.command("LOGON", skynet.address(address))
|
||||
end
|
||||
|
||||
function COMMAND.logoff(address)
|
||||
function COMMAND.logoff(fd, address)
|
||||
address = adjust_address(address)
|
||||
core.command("LOGOFF", skynet.address(address))
|
||||
end
|
||||
|
||||
function COMMAND.signal(address, sig)
|
||||
function COMMAND.signal(fd, address, sig)
|
||||
address = skynet.address(adjust_address(address))
|
||||
if sig then
|
||||
core.command("SIGNAL", string.format("%s %d",address,sig))
|
||||
|
||||
Reference in New Issue
Block a user