vibe.d beta banner
get vibe.d

Asynchronous I/O that doesn’t get in your way, written in D

Function streamInputRange

Implements an input range interface on top of an InputStream using an internal buffer.

auto streamInputRange(ulong buffer_size = 256, InputStream) (
  InputStream stream
if (isInputStream!InputStream);

The buffer is GC allocated and is filled chunk wise. Thus an InputStream that has been wrapped in a StreamInputRange cannot be used reliably on its own anymore.

Reading occurs in a fully lazy fashion. The first call to either front, popFront or empty will potentially trigger waiting for the next chunk of data to arrive - but especially popFront will not wait if it was called after a call to front. This property allows the range to be used in request-response scenarios.


Sönke Ludwig


© 2013-2016 Sönke Ludwig


Subject to the terms of the MIT license, as written in the included LICENSE.txt file.