diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2016-09-04 23:41:18 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2016-09-04 23:41:18 +0200 |
commit | a5be42c02423040bf396bd266117efa8ba8b2fd3 (patch) | |
tree | 867134a314f3c7bae141cb368eb1f083b4e06ef3 | |
parent | dfa0699e732619fc2e47aa8ad6990296d93e67b9 (diff) | |
parent | b676a08b3a4632d80bf46cb57d8e72ddf3398b39 (diff) | |
download | Nim-a5be42c02423040bf396bd266117efa8ba8b2fd3.tar.gz |
Merge branch 'async-readwrite-no-conflict' of https://github.com/endragor/Nim into endragor-async-readwrite-no-conflict
-rw-r--r-- | lib/upcoming/asyncdispatch.nim | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/upcoming/asyncdispatch.nim b/lib/upcoming/asyncdispatch.nim index f333244c6..ce44e8a6a 100644 --- a/lib/upcoming/asyncdispatch.nim +++ b/lib/upcoming/asyncdispatch.nim @@ -1373,19 +1373,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]] |