How do I call this tamplte function?

Ali Çehreli acehreli at yahoo.com
Tue Jun 26 18:01:55 UTC 2018


On 06/26/2018 10:37 AM, Rib wrote:
> to get get() from std.net.curl return a ubyte[] and use my http 
> instance, all those failed:
> 
> string link = "http://...";
> auto client = HTTP();
> // set some client attributes...
> auto fileContents = get!(AutoProtocol, ubyte)(link, client);
> auto fileContents = get!(ubyte)(link, client);
> auto fileContents = get!(client, ubyte)(link, client);
> 
>   I still didn't "get" D templates.

This worked for me:


import std.net.curl;
import std.stdio;
import std.functional;

void myHeaderReceivingFunction(const(char[]) key, const(char[]) value) {
     writefln("Received header: %s = %s", key, value);
}

size_t myDataReceivingFunction(ubyte[] data) {
     writefln("Received data; first part: %s", data[0..10]);
     return data.length;
}

void main() {
     auto client = HTTP("http://dlang.org");

     // If you don't have an actual delegate, you can use 
std.functional.toDelegate:
     client.onReceiveHeader = (&myHeaderReceivingFunction).toDelegate;

     // ... or you can create a delegate with a lambda on the fly:
     client.onReceive = (ubyte[] data) { return 
myDataReceivingFunction(data); };

     client.perform();
}

Ali


More information about the Digitalmars-d-learn mailing list