Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CURLMOPT_SOCKETFUNCTION(3) curl_multi_setopt optionsCURLMOPT_SOCKETFUNCTION(3)

NAME
       CURLMOPT_SOCKETFUNCTION - callback informed about what to wait for

SYNOPSIS
       #include	<curl/curl.h>

       int socket_callback(CURL	*easy,	    /* easy handle */
			   curl_socket_t s, /* socket */
			   int what,	    /* describes the socket */
			   void	*userp,	    /* 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	proto-
       type shown above.

       When the	curl_multi_socket_action(3) function runs, it informs the  ap-
       plication about updates in the socket (file descriptor) status by doing
       none, one, or multiple calls to the socket_callback. The	callback  gets
       status  updates	with  changes since the	previous time the callback was
       called.	If the given callback pointer is NULL,	no  callback  will  be
       called.	Set the	callback's userp argument with CURLMOPT_SOCKETDATA(3).
       See curl_multi_socket_action(3) for more	details	on how the callback is
       used and	should work.

       The  what  parameter  informs  the  callback on the status of the given
       socket. It can hold one of these	values:

       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.

DEFAULT
       NULL (no	callback)

PROTOCOLS
       All

EXAMPLE
       static int sock_cb(CURL *e, curl_socket_t s, int	what, void *cbp, void *sockp)
       {
	 GlobalInfo *g = (GlobalInfo*) cbp;
	 SockInfo *fdp = (SockInfo*) sockp;

	 if(what == CURL_POLL_REMOVE) {
	   remsock(fdp);
	 }
	 else {
	   if(!fdp) {
	     addsock(s,	e, what, g);
	   }
	   else	{
	     setsock(fdp, s, e,	what, g);
	   }
	 }
	 return	0;
       }

       main()
       {
	 GlobalInfo setup;
	 /* ...	use socket callback and	custom pointer */
	 curl_multi_setopt(multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
	 curl_multi_setopt(multi, CURLMOPT_SOCKETDATA, &setup);
       }

AVAILABILITY
       Added in	7.15.4

RETURN VALUE
       Returns CURLM_OK.

SEE ALSO
       CURLMOPT_SOCKETDATA(3),	curl_multi_socket_action(3),   CURLMOPT_TIMER-
       FUNCTION(3)

libcurl	7.54.1			 May 31, 2017	    CURLMOPT_SOCKETFUNCTION(3)

NAME | SYNOPSIS | DESCRIPTION | DEFAULT | PROTOCOLS | EXAMPLE | AVAILABILITY | RETURN VALUE | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=CURLMOPT_SOCKETFUNCTION&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help