mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-23 11:33:09 +00:00
minor fix
This commit is contained in:
@@ -151,7 +151,7 @@ int64_new(lua_State *L) {
|
||||
if (base < 2) {
|
||||
luaL_error(L, "base must be >= 2");
|
||||
}
|
||||
const char * str = lua_tostring(L, 1);
|
||||
const char * str = luaL_checkstring(L, 1);
|
||||
n = strtoll(str, NULL, base);
|
||||
_pushint64(L,n);
|
||||
break;
|
||||
|
||||
@@ -128,7 +128,12 @@ function skynet.ret(...)
|
||||
coroutine.yield("RETURN", ...)
|
||||
end
|
||||
|
||||
local function default_dispatch(f)
|
||||
local function default_dispatch(f, unknown)
|
||||
unknown = unknown or function (session, msg, sz)
|
||||
local self = skynet.self()
|
||||
print(self, session,msg,sz)
|
||||
error(string.format("%s Unknown session %d", self, session))
|
||||
end
|
||||
return function(session, address , msg, sz)
|
||||
if session == nil then
|
||||
return
|
||||
@@ -141,19 +146,22 @@ local function default_dispatch(f)
|
||||
suspend(co, coroutine.resume(co, msg, sz, session, address))
|
||||
else
|
||||
local co = session_id_coroutine[session]
|
||||
assert(co, session)
|
||||
session_id_coroutine[session] = nil
|
||||
suspend(co, coroutine.resume(co, msg, sz))
|
||||
if co == nil then
|
||||
unknown(session,msg,sz)
|
||||
else
|
||||
session_id_coroutine[session] = nil
|
||||
suspend(co, coroutine.resume(co, msg, sz))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function skynet.dispatch(f)
|
||||
c.callback(default_dispatch(f))
|
||||
function skynet.dispatch(f,unknown)
|
||||
c.callback(default_dispatch(f,unknown))
|
||||
end
|
||||
|
||||
function skynet.filter(filter, f)
|
||||
local func = default_dispatch(f)
|
||||
function skynet.filter(filter, f, unknown)
|
||||
local func = default_dispatch(f, unknown)
|
||||
c.callback(function (...)
|
||||
func(filter(...))
|
||||
end)
|
||||
@@ -170,4 +178,10 @@ function skynet.start(f)
|
||||
session_id_coroutine[tonumber(session)] = co
|
||||
end
|
||||
|
||||
function skynet.newservice(name, ...)
|
||||
local args = { "snlua" , name , ... }
|
||||
local handle = skynet.call(".launcher", table.concat(args," "))
|
||||
return handle
|
||||
end
|
||||
|
||||
return skynet
|
||||
|
||||
Reference in New Issue
Block a user