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

FreeBSD Manual Pages

  
 
  

home | help
curl_multi_assign(3)	   Library Functions Manual	  curl_multi_assign(3)

NAME
       curl_multi_assign - set data to associate with an internal socket

SYNOPSIS
       #include	<curl/curl.h>

       CURLMcode curl_multi_assign(CURLM *multi_handle,	curl_socket_t sockfd,
				   void	*sockptr);

DESCRIPTION
       This  function  creates	an association in the multi handle between the
       given socket and	a private pointer of the application. This is designed
       for curl_multi_socket_action(3) uses.

       When set, the sockptr pointer is	passed to all future socket  callbacks
       for the specific	sockfd socket.

       If the given sockfd is not already in use by libcurl, this function re-
       turns an	error.

       libcurl	only  keeps  one  single  pointer associated with a socket, so
       calling this function several times for the same	socket makes the  last
       set pointer get used.

       The  idea  here being that this association (socket to private pointer)
       is something that just about every application that uses	this API needs
       and then	libcurl	can just as well do it since it	already	has the	neces-
       sary functionality.

       It is acceptable	to call	this function from your	multi  callback	 func-
       tions.

PROTOCOLS
       This functionality affects all supported	protocols

EXAMPLE
       int main(void)
       {
	 CURLM *multi =	curl_multi_init();
	 int private = 123;
	 curl_socket_t fd = 0; /* file descriptor to associate our data	with */

	 /* make our struct pointer associated with socket fd */
	 CURLMcode mc =	curl_multi_assign(multi, fd, &private);
	 if(mc)
	   printf("error: %s\n", curl_multi_strerror(mc));
       }

TYPICAL	USAGE
       In  a  typical  application  you	allocate a struct or at	least use some
       kind of semi-dynamic data for each socket that we must wait for	action
       on when using the curl_multi_socket_action(3) approach.

       When  our  socket-callback  gets	 called	 by libcurl and	we get to know
       about yet another socket	to wait	for, we	can  use  curl_multi_assign(3)
       to point	out the	particular data	so that	when we	get updates about this
       same  socket  again,  we	do not have to find the	struct associated with
       this socket by ourselves.

AVAILABILITY
       Added in	curl 7.15.5

RETURN VALUE
       This function returns a CURLMcode indicating success or error.

       CURLM_OK	(0) means everything was OK, non-zero means an error occurred,
       see libcurl-errors(3).

SEE ALSO
       curl_multi_setopt(3), curl_multi_socket_action(3)

libcurl				  2025-06-03		  curl_multi_assign(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=curl_multi_assign&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help