mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-24 20:23:06 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8b7ba7bdbe | ||
|
|
165bed46a8 |
@@ -1,3 +1,7 @@
|
|||||||
|
v0.6.2 (2014-9-1)
|
||||||
|
-----------
|
||||||
|
* bugfix: only skynet.call response PTYPE_ERROR
|
||||||
|
|
||||||
v0.6.1 (2014-8-25)
|
v0.6.1 (2014-8-25)
|
||||||
-----------
|
-----------
|
||||||
* bugfix: datacenter.wakeup
|
* bugfix: datacenter.wakeup
|
||||||
|
|||||||
@@ -144,7 +144,8 @@ function suspend(co, result, command, param, size)
|
|||||||
if not result then
|
if not result then
|
||||||
local session = session_coroutine_id[co]
|
local session = session_coroutine_id[co]
|
||||||
local addr = session_coroutine_address[co]
|
local addr = session_coroutine_address[co]
|
||||||
if session then
|
if session ~= 0 then
|
||||||
|
-- only call response error
|
||||||
c.send(addr, skynet.PTYPE_ERROR, session, "")
|
c.send(addr, skynet.PTYPE_ERROR, session, "")
|
||||||
end
|
end
|
||||||
session_coroutine_id[co] = nil
|
session_coroutine_id[co] = nil
|
||||||
|
|||||||
44
test/testresponse.lua
Normal file
44
test/testresponse.lua
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
local skynet = require "skynet"
|
||||||
|
|
||||||
|
local mode = ...
|
||||||
|
|
||||||
|
if mode == "TICK" then
|
||||||
|
-- this service whould response the request every 1s.
|
||||||
|
|
||||||
|
local response_queue = {}
|
||||||
|
|
||||||
|
local function response()
|
||||||
|
while true do
|
||||||
|
skynet.sleep(100) -- sleep 1s
|
||||||
|
for k,v in ipairs(response_queue) do
|
||||||
|
v(true, skynet.now()) -- true means succ, false means error
|
||||||
|
response_queue[k] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
skynet.start(function()
|
||||||
|
skynet.fork(response)
|
||||||
|
skynet.dispatch("lua", function()
|
||||||
|
table.insert(response_queue, skynet.response())
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
local function request(tick, i)
|
||||||
|
print(i, "call", skynet.now())
|
||||||
|
print(i, "response", skynet.call(tick, "lua"))
|
||||||
|
print(i, "end", skynet.now())
|
||||||
|
end
|
||||||
|
|
||||||
|
skynet.start(function()
|
||||||
|
local tick = skynet.newservice(SERVICE_NAME, "TICK")
|
||||||
|
|
||||||
|
for i=1,5 do
|
||||||
|
skynet.fork(request, tick, i)
|
||||||
|
skynet.sleep(10)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user