Async read/write procedures no longer replace each other in upcoming asyncdispatch

This commit is contained in:
Ruslan Mustakov
2016-09-02 19:15:59 +07:00
parent 0848e9dc0b
commit b676a08b3a

View File

@@ -1368,19 +1368,25 @@ else:
proc addRead*(fd: AsyncFD, cb: Callback) =
let p = getGlobalDispatcher()
var newEvents = {Event.Read}
withData(p.selector, fd.SocketHandle, adata) do:
adata.readCB = cb
if adata.writeCB != nil:
newEvents.incl(Event.Write)
do:
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) =
let p = getGlobalDispatcher()
var newEvents = {Event.Write}
withData(p.selector, fd.SocketHandle, adata) do:
adata.writeCB = cb
if adata.readCB != nil:
newEvents.incl(Event.Read)
do:
raise newException(ValueError, "File descriptor not registered.")
p.selector.updateHandle(fd.SocketHandle, {Event.Write})
p.selector.updateHandle(fd.SocketHandle, newEvents)
proc poll*(timeout = 500) =
var keys: array[64, ReadyKey[AsyncData]]