Sortix cross-volatile manual
This manual documents Sortix cross-volatile. You can instead view this document in the latest official manual.
CURLMOPT_SOCKETFUNCTION(3) | Library Functions Manual | CURLMOPT_SOCKETFUNCTION(3) |
NAME
CURLMOPT_SOCKETFUNCTION - callback informed about what to wait forSYNOPSIS
#include <curl/curl.h>
int socket_callback(CURL *easy, /* easy handle */
curl_socket_t s, /* socket */
int what, /* describes the socket */
void *clientp, /* private callback pointer */
void *socketp); /* private socket pointer */
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_SOCKETFUNCTION, socket_callback);
DESCRIPTION
Pass a pointer to your callback function, which should match the prototype shown above.CALLBACK ARGUMENTS
easy identifies the specific transfer for which this update is related. Since this callback manages a whole multi handle, an application should not make assumptions about which particular handle that is passed here. It might even be an internal easy handle that the application did not add itself.- CURL_POLL_IN
- Wait for incoming data. For the socket to become readable.
- CURL_POLL_OUT
- Wait for outgoing data. For the socket to become writable.
- CURL_POLL_INOUT
- Wait for incoming and outgoing data. For the socket to become readable or writable.
- CURL_POLL_REMOVE
- The specified socket/file descriptor is no longer used by libcurl for any active transfer. It might soon be added again.
DEFAULT
NULL (no callback)PROTOCOLS
This functionality affects all supported protocolsEXAMPLE
struct priv {
void *ours;
};
static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
{
struct priv *p = sockp;
printf("our ptr: %p\n", p->ours);
if(what == CURL_POLL_REMOVE) {
/* remove the socket from our collection */
}
if(what & CURL_POLL_IN) {
/* wait for read on this socket */
}
if(what & CURL_POLL_OUT) {
/* wait for write on this socket */
}
return 0;
}
int main(void)
{
struct priv setup;
CURLM *multi = curl_multi_init();
/* ... use socket callback and custom pointer */
curl_multi_setopt(multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
curl_multi_setopt(multi, CURLMOPT_SOCKETDATA, &setup);
}
AVAILABILITY
Added in curl 7.15.4RETURN VALUE
Returns CURLM_OK.SEE ALSO
CURLMOPT_SOCKETDATA(3), CURLMOPT_TIMERFUNCTION(3), curl_multi_socket_action(3)2024-12-28 | libcurl |