add message log

This commit is contained in:
Cloud Wu
2014-08-22 15:30:35 +08:00
parent 04688e98a7
commit 16f63df0c3
8 changed files with 210 additions and 38 deletions

View File

@@ -1,5 +1,6 @@
local skynet = require "skynet"
local codecache = require "skynet.codecache"
local core = require "skynet.core"
local socket = require "socket"
local snax = require "snax"
@@ -120,6 +121,9 @@ function COMMAND.help()
service = "List unique service",
task = "task address : show service task detail",
inject = "inject address luascript.lua",
logon = "logon address",
logoff = "logoff address",
log = "launch a new lua service with log",
}
end
@@ -136,6 +140,15 @@ function COMMAND.start(...)
end
end
function COMMAND.log(...)
local ok, addr = pcall(skynet.call, ".launcher", "lua", "LOGLAUNCH", "snlua", ...)
if ok then
return { [skynet.address(addr)] = ... }
else
return "Failed"
end
end
function COMMAND.snax(...)
local ok, s = pcall(snax.newservice, ...)
if ok then
@@ -181,3 +194,13 @@ function COMMAND.info(address)
address = adjust_address(address)
return skynet.call(address,"debug","INFO")
end
function COMMAND.logon(address)
address = adjust_address(address)
core.command("LOGON", skynet.address(address))
end
function COMMAND.logoff(address)
address = adjust_address(address)
core.command("LOGOFF", skynet.address(address))
end

View File

@@ -1,4 +1,5 @@
local skynet = require "skynet"
local core = require "skynet.core"
local string = string
local services = {}
@@ -65,18 +66,29 @@ function command.REMOVE(_, handle)
return NORET
end
local function return_string(str)
return str
local function launch_service(service, ...)
local param = table.concat({...}, " ")
local inst = skynet.launch(service, param)
local response = skynet.response()
if inst then
services[inst] = service .. " " .. param
instance[inst] = response
else
response(false)
return
end
return inst
end
function command.LAUNCH(_, service, ...)
local param = table.concat({...}, " ")
local inst = skynet.launch(service, param)
launch_service(service, ...)
return NORET
end
function command.LOGLAUNCH(_, service, ...)
local inst = launch_service(service, ...)
if inst then
services[inst] = service .. " " .. param
instance[inst] = skynet.response(return_string)
else
skynet.ret("") -- launch failed
core.command("LOGON", skynet.address(inst))
end
return NORET
end
@@ -97,7 +109,7 @@ function command.LAUNCHOK(address)
-- init notice
local response = instance[address]
if response then
response(true, skynet.address(address))
response(true, address)
instance[address] = nil
end
@@ -116,9 +128,7 @@ skynet.register_protocol {
elseif cmd == "ERROR" then
command.ERROR(address)
else
-- launch request
local service, param = string.match(cmd,"([^ ]+) (.*)")
command.LAUNCH(_, service, param)
error ("Invalid text command " .. cmd)
end
end,
}