| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- .\" generated by cd2nroff 0.1 from curl_multi_assign.md
- .TH curl_multi_assign 3 "2025-01-17" libcurl
- .SH NAME
- curl_multi_assign \- set data to associate with an internal socket
- .SH SYNOPSIS
- .nf
- #include <curl/curl.h>
- CURLMcode curl_multi_assign(CURLM *multi_handle, curl_socket_t sockfd,
- void *sockptr);
- .fi
- .SH 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
- \fIcurl_multi_socket_action(3)\fP uses.
- When set, the \fIsockptr\fP pointer is passed to all future socket callbacks
- for the specific \fIsockfd\fP socket.
- If the given \fIsockfd\fP is not already in use by libcurl, this function
- returns 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 necessary
- functionality.
- It is acceptable to call this function from your multi callback functions.
- .SH PROTOCOLS
- This functionality affects all supported protocols
- .SH EXAMPLE
- .nf
- int main(void)
- {
- CURLM *multi = curl_multi_init();
- void *ourstructp; /* pointer to our data */
- curl_socket_t fd; /* file descriptor to associate our data with */
- /* make our struct pointer associated with socket fd */
- CURLMcode mc = curl_multi_assign(multi, fd, ourstructp);
- if(mc)
- printf("error: %s\\n", curl_multi_strerror(mc));
- }
- .fi
- .SH 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 \fIcurl_multi_socket_action(3)\fP approach.
- When our socket\-callback gets called by libcurl and we get to know about yet
- another socket to wait for, we can use \fIcurl_multi_assign(3)\fP 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.
- .SH AVAILABILITY
- Added in curl 7.15.5
- .SH RETURN VALUE
- The standard CURLMcode for multi interface error codes.
- .SH SEE ALSO
- .BR curl_multi_setopt (3),
- .BR curl_multi_socket_action (3)
|