64,654
社区成员
发帖
与我相关
我的任务
分享
sapi = require('sapi')
require('os')
function cb(sess, req)
first = "curtime=" .. tostring(os.time()) .. " req=" .. req
sapi.write_response(sess, first)
function alarm_cb(arg)
second = "curtime=" .. tostring(os.time()) .. " res=" .. req
sapi.write_response(sess, second)
end
sapi.block_alarm(sess, 4000, alarm_cb, req)
end
sapi.start_consume(session, cb)
module('sapi', package.seeall) --session api
local capi = require('capi')
--get a request from session->reqs if not empty,
--otherwise it will do yield.
--you have to notice that we are already in coroutine here
function get_req(session)
req = capi._get_req(session)
while req == nil do
coroutine.yield()
req = capi._get_req(session)
end
return req
end
function write_response(session, content)
return capi._write_response(session, content)
end
function block_alarm(session, timeout, callback, arg)
capi._block_alarm(session, timeout)
coroutine.yield()
callback(arg)
end
function start_consume(session, cb)
while true do
req = get_req(session)
cb(session, req)
end
end