libcurl
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Fri May 20 14:27:14 PDT 2011
On 5/20/11 4:16 PM, jdrewsen wrote:
> Den 19-05-2011 22:50, Andrei Alexandrescu skrev:
>> On 5/19/11 3:28 PM, jdrewsen wrote:
>> [snip]
>>
>> Speaking of which, what's the status on recycling them buffers? :o)
>
> I'm slowly going through all the suggestions I received in the "Curl
> wrapper" thread. I still haven't fixed the recycling buffers though.
>
> /Jonas
Great. It's very exciting that once that is done, a two-stroke download
program that transfers data at optimal speed is a five-liner:
import std.exception, std.net.curl, std.stdio;
void main(string[] args) {
enforce(args == 2, "Usage: " ~ args[0] ~ " url");
foreach (chunk; Http.byChunk(args[1])) {
stdout.rawWrite(chunk);
}
}
If we play our cards right, then (a) the memory allocated will be
constant in the size of the input, (b) reading and writing will not
block each other (except when buffers are full or starved), and (c)
transfer rate will be optimal, i.e. never slower than the minimum of
input and output rate.
I'm really looking forward to this.
Andrei
More information about the Digitalmars-d
mailing list