diff options
Diffstat (limited to 'lib/pure/asyncfile.nim')
-rw-r--r-- | lib/pure/asyncfile.nim | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/pure/asyncfile.nim b/lib/pure/asyncfile.nim index 0241e4796..5a23f3ba2 100644 --- a/lib/pure/asyncfile.nim +++ b/lib/pure/asyncfile.nim @@ -476,3 +476,15 @@ proc close*(f: AsyncFile) = if close(f.fd.cint) == -1: raiseOSError(osLastError()) +proc writeFromStream(f: AsyncFile, fut: FutureStream[string]) {.async.} = + while true: + let (hasValue, value) = await fut.take() + if hasValue: + await f.write(value) + else: + break + +proc getWriteStream*(f: AsyncFile): FutureStream[string] = + ## Returns a new stream that can be used for writing to the file. + result = newFutureStream[string]() + asyncCheck writeFromStream(f, result) |