diff options
author | Dominik Picheta <dominikpicheta@gmail.com> | 2017-02-26 12:52:19 +0100 |
---|---|---|
committer | Dominik Picheta <dominikpicheta@gmail.com> | 2017-02-26 12:52:19 +0100 |
commit | f9cce320974c33554302d2a801c89e413c70a80b (patch) | |
tree | cf951f97934e6d27ee517940197b08db1d6df44a /lib/pure/asyncfile.nim | |
parent | 912d95a6ea2583bd783f85527dc3526b77710568 (diff) | |
download | Nim-f9cce320974c33554302d2a801c89e413c70a80b.tar.gz |
Various fixes to FutureStreams based on PR feedback.
Diffstat (limited to 'lib/pure/asyncfile.nim')
-rw-r--r-- | lib/pure/asyncfile.nim | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/pure/asyncfile.nim b/lib/pure/asyncfile.nim index adfe6edba..488b8276e 100644 --- a/lib/pure/asyncfile.nim +++ b/lib/pure/asyncfile.nim @@ -476,13 +476,16 @@ proc close*(f: AsyncFile) = if close(f.fd.cint) == -1: raiseOSError(osLastError()) -proc writeFromStream(f: AsyncFile, fut: FutureStream[string]) {.async.} = +proc writeFromStream*(f: AsyncFile, fs: FutureStream[string]) {.async.} = + ## Reads data from the specified future stream until it is completed. + ## The data which is read is written to the file immediately and + ## freed from memory. + ## + ## This procedure is perfect for saving streamed data to a file without + ## wasting memory. while true: - let (hasValue, value) = await fut.take() + let (hasValue, value) = await fs.read() if hasValue: await f.write(value) else: break - -proc setWriteStream*(f: AsyncFile; fut: FutureStream[string]) {.async.} = - await writeFromStream(f, fut) |