mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-22 02:53:09 +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)
|
||||
-----------
|
||||
* bugfix: datacenter.wakeup
|
||||
|
||||
@@ -144,7 +144,8 @@ function suspend(co, result, command, param, size)
|
||||
if not result then
|
||||
local session = session_coroutine_id[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, "")
|
||||
end
|
||||
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