1. 可以在服务运行中动态require socket

2. 添加方法skynet.retpack/skynet.dispatch_unknown_request
3. skynet.filter透传参数
This commit is contained in:
xjdrew
2014-04-21 17:50:04 +08:00
parent c577a4f07d
commit c081816f06
2 changed files with 19 additions and 5 deletions

View File

@@ -316,6 +316,10 @@ function skynet.ret(msg, sz)
coroutine_yield("RETURN", msg, sz)
end
function skynet.retpack(...)
return skynet.ret(skynet.pack(...))
end
function skynet.wakeup(co)
if sleep_session[co] and wakeup_session[co] == nil then
wakeup_session[co] = true
@@ -329,6 +333,17 @@ function skynet.dispatch(typename, func)
p.dispatch = func
end
local function unknown_request(session, address, msg, sz)
print("Unknown request :" , c.tostring(msg,sz))
error(string.format("Unknown session : %d from %x", session, address))
end
function skynet.dispatch_unknown_request(unknown)
local prev = unknown_request
unknown_request = unknown
return prev
end
local function unknown_response(session, address, msg, sz)
print("Response message :" , c.tostring(msg,sz))
error(string.format("Unknown session : %d from %x", session, address))
@@ -352,7 +367,7 @@ function skynet.fork(func,...)
table.insert(fork_queue, co)
end
local function raw_dispatch_message(prototype, msg, sz, session, source)
local function raw_dispatch_message(prototype, msg, sz, session, source, ...)
-- skynet.PTYPE_RESPONSE = 1, read skynet.h
if prototype == 1 then
local co = session_id_coroutine[session]
@@ -371,10 +386,9 @@ local function raw_dispatch_message(prototype, msg, sz, session, source)
local co = co_create(f)
session_coroutine_id[co] = session
session_coroutine_address[co] = source
suspend(co, coroutine.resume(co, session,source, p.unpack(msg,sz)))
suspend(co, coroutine.resume(co, session,source, p.unpack(msg,sz, ...)))
else
print("Unknown request :" , p.unpack(msg,sz))
error(string.format("Can't dispatch type %s : ", p.name))
unknown_request(session, source, msg, sz)
end
end
end