Merge pull request #9687 from narimiran/fix-7192

export `asyncdispatch.callSoon` (fixes #7192)
This commit is contained in:
Dominik Picheta
2018-11-13 21:12:19 +00:00
committed by GitHub
2 changed files with 18 additions and 3 deletions

View File

@@ -16,7 +16,8 @@ import asyncfutures except callSoon
import nativesockets, net, deques
export Port, SocketFlag
export asyncfutures, asyncstreams
export asyncfutures except callSoon
export asyncstreams
#{.injectStmt: newGcInvariant().}
@@ -199,7 +200,7 @@ proc adjustTimeout(pollTimeout: int, nextTimer: Option[int]): int {.inline.} =
if pollTimeout == -1: return
result = min(pollTimeout, result)
proc callSoon(cbproc: proc ()) {.gcsafe.}
proc callSoon*(cbproc: proc ()) {.gcsafe.}
proc initCallSoonProc =
if asyncfutures.getCallSoonProc().isNil:
@@ -1640,7 +1641,7 @@ proc recvLine*(socket: AsyncFD): Future[string] {.async, deprecated.} =
return
add(result, c)
proc callSoon(cbproc: proc ()) =
proc callSoon*(cbproc: proc ()) =
## Schedule `cbproc` to be called as soon as possible.
## The callback is called when control returns to the event loop.
getGlobalDispatcher().callbacks.addLast(cbproc)

14
tests/async/t7192.nim Normal file
View File

@@ -0,0 +1,14 @@
discard """
output: '''
testCallback()
'''
"""
import asyncdispatch
proc testCallback() =
echo "testCallback()"
when isMainModule:
callSoon(testCallback)
poll()