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 is	called,	it informs the
       application about updates in the	socket (file descriptor) status	by do-
       ing none, one, or multiple calls	to the socket_callback.	 The  callback
       function	 gets  status updates with changes since the previous time the
       callback	was called. If the given callback pointer is set to  NULL,  no
       callback	will be	called.

CALLBACK ARGUMENTS
       easy identifies the specific transfer for which this update is related.

       s is the	specific socket	this function invocation concerns. If the what
       argument	is not CURL_POLL_REMOVE	then it	holds information  about  what
       activity	 on this socket	the application	is supposed to monitor.	Subse-
       quent calls to this callback might update the what bits	for  a	socket
       that is already monitored.

       userp is	set with CURLMOPT_SOCKETDATA(3).

       socketp is set with curl_multi_assign(3)	or will	be NULL.

       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.72.0			 June 24, 2019	    CURLMOPT_SOCKETFUNCTION(3)

NAME | SYNOPSIS | DESCRIPTION | CALLBACK ARGUMENTS | 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