mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-24 20:23:06 +00:00
move yield from suspend to pause, see #1248
This commit is contained in:
@@ -37,13 +37,13 @@ local function pause_socket(s, size)
|
|||||||
end
|
end
|
||||||
driver.pause(s.id)
|
driver.pause(s.id)
|
||||||
s.pause = true
|
s.pause = true
|
||||||
|
skynet.yield() -- there are subsequent socket messages in mqueue, maybe.
|
||||||
end
|
end
|
||||||
|
|
||||||
local function suspend(s)
|
local function suspend(s)
|
||||||
assert(not s.co)
|
assert(not s.co)
|
||||||
s.co = coroutine.running()
|
s.co = coroutine.running()
|
||||||
if s.pause then
|
if s.pause then
|
||||||
skynet.yield() -- there are subsequent socket messages in mqueue, maybe.
|
|
||||||
skynet.error(string.format("Resume socket (%d)", s.id))
|
skynet.error(string.format("Resume socket (%d)", s.id))
|
||||||
driver.start(s.id)
|
driver.start(s.id)
|
||||||
skynet.wait(s.co)
|
skynet.wait(s.co)
|
||||||
@@ -75,10 +75,10 @@ socket_message[1] = function(id, size, data)
|
|||||||
-- read size
|
-- read size
|
||||||
if sz >= rr then
|
if sz >= rr then
|
||||||
s.read_required = nil
|
s.read_required = nil
|
||||||
wakeup(s)
|
|
||||||
if sz > BUFFER_LIMIT then
|
if sz > BUFFER_LIMIT then
|
||||||
pause_socket(s, sz)
|
pause_socket(s, sz)
|
||||||
end
|
end
|
||||||
|
wakeup(s)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if s.buffer_limit and sz > s.buffer_limit then
|
if s.buffer_limit and sz > s.buffer_limit then
|
||||||
@@ -90,10 +90,10 @@ socket_message[1] = function(id, size, data)
|
|||||||
-- read line
|
-- read line
|
||||||
if driver.readline(s.buffer,nil,rr) then
|
if driver.readline(s.buffer,nil,rr) then
|
||||||
s.read_required = nil
|
s.read_required = nil
|
||||||
wakeup(s)
|
|
||||||
if sz > BUFFER_LIMIT then
|
if sz > BUFFER_LIMIT then
|
||||||
pause_socket(s, sz)
|
pause_socket(s, sz)
|
||||||
end
|
end
|
||||||
|
wakeup(s)
|
||||||
end
|
end
|
||||||
elseif sz > BUFFER_LIMIT and not s.pause then
|
elseif sz > BUFFER_LIMIT and not s.pause then
|
||||||
pause_socket(s, sz)
|
pause_socket(s, sz)
|
||||||
|
|||||||
Reference in New Issue
Block a user