On Saturday, 6 February 2016 at 06:29:56 UTC, cy wrote:
Let's say I have a socket, and a file, and I want to send the contents of that file to the socket. What's the best way to do that? Yes I'm aware that in Linux, you can use a combination of a pipe and splice(2) to keep all buffers kernel side for that, but I was thinking more generally. The traditional C way is to read() into a buffer, then write() it out, until the input is exhausted. But apparantly in D we're not supposed to do that?

It's just that I tried to use std.stream, and found that the whole module had been marked as deprecated some time last year. What exactly is going to replace it? Some sort of lazy file contents accessor, that can take advantage of zero copy things like splice() when hooked together? A source/sink paradigm maybe?

I don't see anything analagous to what std.stream does in phobos... has it just not been made public yet?

There are some third party libraries that implement streams [1], but your example can be done like:

foreach(chunk; File("path/to/file").byChunk(16 * 1024))
    socket.write(chunk);

[1] e.g. http://code.dlang.org/packages/io

Reply via email to