curl / libcurl / API / curl_multi_setopt / CURLMOPT_SOCKETDATA

CURLMOPT_SOCKETDATA explained

Name

CURLMOPT_SOCKETDATA - custom pointer passed to the socket callback

Synopsis

#include <curl/curl.h>
 
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_SOCKETDATA, void *pointer);

Description

A data pointer to pass to the socket callback set with the CURLMOPT_SOCKETFUNCTION option.

This pointer is not touched by libcurl but is only passed in as the socket callback's clientp argument.

Default

NULL

Protocols

This functionality affects all supported protocols

Example

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("my 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.4

Return value

Returns CURLM_OK.

See also

CURLMOPT_SOCKETFUNCTION(3), CURLMOPT_TIMERFUNCTION(3), curl_multi_socket_action(3)

This HTML page was made with roffit.