Async read/write procedures no longer replace each other in upcoming asyncdispatch
This commit is contained in:
parent
0848e9dc0b
commit
b676a08b3a
1 changed files with 8 additions and 2 deletions
|
|
@ -1368,19 +1368,25 @@ else:
|
||||||
|
|
||||||
proc addRead*(fd: AsyncFD, cb: Callback) =
|
proc addRead*(fd: AsyncFD, cb: Callback) =
|
||||||
let p = getGlobalDispatcher()
|
let p = getGlobalDispatcher()
|
||||||
|
var newEvents = {Event.Read}
|
||||||
withData(p.selector, fd.SocketHandle, adata) do:
|
withData(p.selector, fd.SocketHandle, adata) do:
|
||||||
adata.readCB = cb
|
adata.readCB = cb
|
||||||
|
if adata.writeCB != nil:
|
||||||
|
newEvents.incl(Event.Write)
|
||||||
do:
|
do:
|
||||||
raise newException(ValueError, "File descriptor not registered.")
|
raise newException(ValueError, "File descriptor not registered.")
|
||||||
p.selector.updateHandle(fd.SocketHandle, {Event.Read})
|
p.selector.updateHandle(fd.SocketHandle, newEvents)
|
||||||
|
|
||||||
proc addWrite*(fd: AsyncFD, cb: Callback) =
|
proc addWrite*(fd: AsyncFD, cb: Callback) =
|
||||||
let p = getGlobalDispatcher()
|
let p = getGlobalDispatcher()
|
||||||
|
var newEvents = {Event.Write}
|
||||||
withData(p.selector, fd.SocketHandle, adata) do:
|
withData(p.selector, fd.SocketHandle, adata) do:
|
||||||
adata.writeCB = cb
|
adata.writeCB = cb
|
||||||
|
if adata.readCB != nil:
|
||||||
|
newEvents.incl(Event.Read)
|
||||||
do:
|
do:
|
||||||
raise newException(ValueError, "File descriptor not registered.")
|
raise newException(ValueError, "File descriptor not registered.")
|
||||||
p.selector.updateHandle(fd.SocketHandle, {Event.Write})
|
p.selector.updateHandle(fd.SocketHandle, newEvents)
|
||||||
|
|
||||||
proc poll*(timeout = 500) =
|
proc poll*(timeout = 500) =
|
||||||
var keys: array[64, ReadyKey[AsyncData]]
|
var keys: array[64, ReadyKey[AsyncData]]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue