CURLMOPT_SOCKETDATA.3 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. .\" generated by cd2nroff 0.1 from CURLMOPT_SOCKETDATA.md
  2. .TH CURLMOPT_SOCKETDATA 3 "2025-01-17" libcurl
  3. .SH NAME
  4. CURLMOPT_SOCKETDATA \- custom pointer passed to the socket callback
  5. .SH SYNOPSIS
  6. .nf
  7. #include <curl/curl.h>
  8. CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_SOCKETDATA, void *pointer);
  9. .fi
  10. .SH DESCRIPTION
  11. A data \fIpointer\fP to pass to the socket callback set with the
  12. \fICURLMOPT_SOCKETFUNCTION(3)\fP option.
  13. This pointer is not touched by libcurl but is only passed in as the socket
  14. callback\(aqs \fBclientp\fP argument.
  15. .SH DEFAULT
  16. NULL
  17. .SH PROTOCOLS
  18. This functionality affects all supported protocols
  19. .SH EXAMPLE
  20. .nf
  21. struct priv {
  22. void *ours;
  23. };
  24. static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
  25. {
  26. struct priv *p = sockp;
  27. printf("my ptr: %p\\n", p->ours);
  28. if(what == CURL_POLL_REMOVE) {
  29. /* remove the socket from our collection */
  30. }
  31. if(what & CURL_POLL_IN) {
  32. /* wait for read on this socket */
  33. }
  34. if(what & CURL_POLL_OUT) {
  35. /* wait for write on this socket */
  36. }
  37. return 0;
  38. }
  39. int main(void)
  40. {
  41. struct priv setup;
  42. CURLM *multi = curl_multi_init();
  43. /* ... use socket callback and custom pointer */
  44. curl_multi_setopt(multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
  45. curl_multi_setopt(multi, CURLMOPT_SOCKETDATA, &setup);
  46. }
  47. .fi
  48. .SH AVAILABILITY
  49. Added in curl 7.15.4
  50. .SH RETURN VALUE
  51. Returns CURLM_OK.
  52. .SH SEE ALSO
  53. .BR CURLMOPT_SOCKETFUNCTION (3),
  54. .BR CURLMOPT_TIMERFUNCTION (3),
  55. .BR curl_multi_socket_action (3)