* Fixes #8994. FutureStream read procedure data loss no longer occurs. * Optimises the fix for #8994.
This commit is contained in:
parent
5076fda2e2
commit
21ecf64d24
2 changed files with 24 additions and 2 deletions
|
|
@ -35,6 +35,26 @@ proc beta() {.async.} =
|
|||
asyncCheck alpha()
|
||||
waitFor beta()
|
||||
|
||||
template ensureCallbacksAreScheduled =
|
||||
# callbacks are called directly if the dispatcher is not running
|
||||
discard getGlobalDispatcher()
|
||||
|
||||
proc testCompletion() {.async.} =
|
||||
ensureCallbacksAreScheduled
|
||||
|
||||
var stream = newFutureStream[string]()
|
||||
|
||||
for i in 1..5:
|
||||
await stream.write($i)
|
||||
|
||||
var readFuture = stream.readAll()
|
||||
stream.complete()
|
||||
yield readFuture
|
||||
let data = readFuture.read()
|
||||
doAssert(data.len == 5, "actual data len = " & $data.len)
|
||||
|
||||
waitFor testCompletion()
|
||||
|
||||
# TODO: Something like this should work eventually.
|
||||
# proc delta(): FutureStream[string] {.async.} =
|
||||
# for i in 0 .. 5:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue