fix api for filter

This commit is contained in:
云风
2012-08-10 10:52:17 +08:00
parent f57e98205d
commit c35e1152fe
2 changed files with 13 additions and 10 deletions

View File

@@ -103,7 +103,7 @@ function skynet.ret(...)
coroutine.yield("RETURN", ...)
end
function skynet.default_dispatch(f)
local function default_dispatch(f)
return function(session, address , msg, sz)
if session <= 0 then
session = - session
@@ -121,10 +121,15 @@ function skynet.default_dispatch(f)
end
function skynet.dispatch(f)
c.callback(skynet.default_dispatch(f))
c.callback(default_dispatch(f))
end
skynet.filter = assert(c.callback)
function skynet.filter(filter, f)
local func = default_dispatch(f)
c.callback(function (...)
func(filter(...))
end)
end
function skynet.start(f)
local session = c.command("TIMEOUT","0")

View File

@@ -1,12 +1,6 @@
local skynet = require "skynet"
local client = ...
local dispatch_handler = skynet.default_dispatch(function (msg,sz)
local message = skynet.tostring(msg,sz)
local result = skynet.call("SIMPLEDB",message)
skynet.ret(result)
end)
local session_id = 0
skynet.filter(function (session, address , msg, sz)
if address == client then
@@ -18,7 +12,11 @@ skynet.filter(function (session, address , msg, sz)
else
print("skynet message",msg,sz)
end
dispatch_handler(session,address, msg,sz)
return session, address , msg, sz
end, function (msg,sz)
local message = skynet.tostring(msg,sz)
local result = skynet.call("SIMPLEDB",message)
skynet.ret(result)
end)
skynet.start(function()