I am using curl
to send POST
and GET
requests and I use callback functions to get the replies from these requests. These callback
functions are static member functions which in turn call non static member functions (you can't use non static member functions in curl
directly so therefor this workaround).
Since these callback functions can't return a result, I use an attribute in my C++ class to store the reply. This all works fine but now my question. Does curl_easy_perform()
block until the entire request is sent AND the reply is processed by the callback function OR does my program continue after curl_easy_perform()
and is it getting interrupted somehow when the reply from the request is received?
The importance to me is that I want to be sure that the data in my attribute that should contain the reply is already in there or is it possible that there is still old data in this attribute because the callback function hasn't yet been called.
I realize that my explanation is not very clear so if you don't understand, please let me know and I will try to rephrase it.
Thanks!
More details are found in the libcurl-easy man page. The multi interface on the other hand is an asynchronous interface, that you call and that performs only a little piece of the transfer on each invoke. It is perfect if you want to do things while the transfer is in progress, or similar.
curl_easy_setopt is used to tell libcurl how to behave. By setting the appropriate options, the application can change libcurl's behavior. All options are set with an option followed by a parameter.
Does curl_easy_perform() block until the entire request is send AND the reply is processed by the callback function
Yes, that is exactly what it does.
(If you rather want a non-blocking behavior, libcurl's multi interface is the way to go.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With