summary refs log tree commit diff stats
path: root/lib/pure/asyncfile.nim
diff options
context:
space:
mode:
authorDominik Picheta <dominikpicheta@gmail.com>2017-02-26 12:52:19 +0100
committerDominik Picheta <dominikpicheta@gmail.com>2017-02-26 12:52:19 +0100
commitf9cce320974c33554302d2a801c89e413c70a80b (patch)
treecf951f97934e6d27ee517940197b08db1d6df44a /lib/pure/asyncfile.nim
parent912d95a6ea2583bd783f85527dc3526b77710568 (diff)
downloadNim-f9cce320974c33554302d2a801c89e413c70a80b.tar.gz
Various fixes to FutureStreams based on PR feedback.
Diffstat (limited to 'lib/pure/asyncfile.nim')
-rw-r--r--lib/pure/asyncfile.nim13
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)