On Mon, 14 Dec 2020, XSLT2.0 via curl-library wrote:

we don't get any feedback and nobody writes any pull requests for it.

The code is obviously incomplete, which helps a lot understanding things because it is "short enough", but does probably not encourage to write PR?

That would explain it then. But I also don't want to spend time and energy on something that won't be used. Catch 22!

It is also pretty un-optimised: the write callback could be called multiple times in a multi_perform cycle.

There's this saying about premature optimization...

-2) A step towards zero-copy libcurl (a topic much discussed!)

I don't think it will help with that...

Vocabulary (as often)! It depends on what you call "zero-copy" here.

Sure, zero-copy usually means fewer-copies and that's fine, but I still don't think the fcurl API is the key to solving that. But I'm also not suggesting that I have a firm idea of how to do a fewer-copies implementation that A) makes sense to users and B) makes a performance impact.

In fact, I've never seen a zero-copy suggestion for libcurl that provides A + B.

- call libcurl to provide buffer/size where the data is needed
- call curl_multi_perform (or whatever existing/new function)
- curl_multi_perform returns when the provided buffer is full.

Feel free to work on implementing that!

That would trim down the fread code to almost nothing: 2 calls and error handling... but possibly pushing down the rest of the fcurl code inside the library, which hopefully would take care of limiting the number of memcpy/realloc!

If fcurl would ever become popular, we could certainly discuss making it a part of libcurl proper. That was the plan from the beginning. I just don't see it happening any time soon...

But maybe the "caller provided buffers" technique is already possible to achieve with "multi-socket"?

No. We deliver and get data to and from transfers the same way, independently of which API you use, with the read and write callbacks using internal buffers.

For a zero-copy API, I figure the application would somehow provide the buffer first and then the callback would be done and tell the application when (a piece of) the buffer has been populated.

Could someone point me to a similarly enlightening example as fcurl, but using "multi-socket"?

I'm not aware of any such example. To me, it seems that would just complicate fcurl.

--

 / daniel.haxx.se
 | Commercial curl support up to 24x7 is available!
 | Private help, bug fixes, support, ports, new features
 | https://www.wolfssl.com/contact/
-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:   https://curl.se/mail/etiquette.html

Reply via email to