On 03/24/2017 07:04 PM, doa379 wrote: > > On Friday, 24 March 2017 13:23:33 UTC, Ben Noordhuis wrote: > > On Thu, Mar 23, 2017 at 8:24 PM, doa379 <[email protected] > <javascript:>> wrote: > > I'm trying to integrate libuv with libcurl. > > The uv_poll_start function uses the callback function curl_perform > whenever > > (action) events call for polling IN and OUT like so: > > > > switch (action) > > { > > case CURL_POLL_INOUT: > > uv_poll_start(&curl_context->poll_handle, events, curl_perform); > > break; > > } > > > > Is it possible to use a different callback function or pass > additional > > parameters to it? > > You can set curl_context->poll_handle.data to a pointer or use a > container_of-like macro to obtain the enclosing curl_context in your > uv_poll_cb callback. > > > The prototype of the uv_poll_cb function is: > > void |(*uv_poll_cb)|(uv_poll_t > <http://docs.libuv.org/en/v1.x/poll.html#c.uv_poll_t>*/ handle/, > int/ status/, int/ events/) > > If one sends a generic structure (encapsulating the poll_handle) there's > no void * arguments in the uv_poll_cb which one could de-reference. >
Not sure I follow. You have a reference to the handle itself, so you could get a pointer to the enclosing structure, or use handle->data, which is a void* for you to use. > The specific problem in my case is I want to pass a CURLM handle (which > happens to be nested away in some other struct) to the uv_poll_cb > function which in this case is called curl_perform. This entire exercise > is following the multi-uv.c example here: > > https://curl.haxx.se/libcurl/c/multi-uv.html > > As an aside I'm not entirely sure if it's worth considering a more > flexible callback function in the API. > So far nobody has requested this, what do you have in mind? Cheers, -- Saúl Ibarra Corretgé bettercallsaghul.com -- You received this message because you are subscribed to the Google Groups "libuv" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/libuv. For more options, visit https://groups.google.com/d/optout.
signature.asc
Description: OpenPGP digital signature
