minor fix

This commit is contained in:
云风
2012-08-24 16:05:30 +08:00
parent e81a146385
commit 6554e4612a
2 changed files with 23 additions and 9 deletions

View File

@@ -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;

View File

@@ -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