| .\" ************************************************************************** |
| .\" * _ _ ____ _ |
| .\" * Project ___| | | | _ \| | |
| .\" * / __| | | | |_) | | |
| .\" * | (__| |_| | _ <| |___ |
| .\" * \___|\___/|_| \_\_____| |
| .\" * |
| .\" * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al. |
| .\" * |
| .\" * This software is licensed as described in the file COPYING, which |
| .\" * you should have received as part of this distribution. The terms |
| .\" * are also available at https://curl.se/docs/copyright.html. |
| .\" * |
| .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell |
| .\" * copies of the Software, and permit persons to whom the Software is |
| .\" * furnished to do so, under the terms of the COPYING file. |
| .\" * |
| .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| .\" * KIND, either express or implied. |
| .\" * |
| .\" * SPDX-License-Identifier: curl |
| .\" * |
| .\" ************************************************************************** |
| .TH curl_multi_socket 3 "9 Jul 2006" "libcurl" "libcurl" |
| .SH NAME |
| curl_multi_socket \- reads/writes available data |
| .SH SYNOPSIS |
| .nf |
| #include <curl/curl.h> |
| CURLMcode curl_multi_socket(CURLM *multi_handle, curl_socket_t sockfd, |
| int *running_handles); |
| |
| CURLMcode curl_multi_socket_all(CURLM *multi_handle, |
| int *running_handles); |
| .fi |
| .SH DESCRIPTION |
| These functions are deprecated. Do not use. See |
| \fIcurl_multi_socket_action(3)\fP instead. |
| |
| At return, the integer \fBrunning_handles\fP points to will contain the number |
| of still running easy handles within the multi handle. When this number |
| reaches zero, all transfers are complete/done. Note that when you call |
| \fIcurl_multi_socket_action(3)\fP on a specific socket and the counter |
| decreases by one, it DOES NOT necessarily mean that this exact socket/transfer |
| is the one that completed. Use \fIcurl_multi_info_read(3)\fP to figure out |
| which easy handle that completed. |
| |
| The \fIcurl_multi_socket_action(3)\fP functions inform the application about |
| updates in the socket (file descriptor) status by doing none, one, or multiple |
| calls to the socket callback function set with the |
| \fICURLMOPT_SOCKETFUNCTION(3)\fP option to \fIcurl_multi_setopt(3)\fP. They |
| update the status with changes since the previous time the callback was |
| called. |
| |
| Get the timeout time by setting the \fICURLMOPT_TIMERFUNCTION(3)\fP option |
| with \fIcurl_multi_setopt(3)\fP. Your application will then get called with |
| information on how long to wait for socket actions at most before doing the |
| timeout action: call the \fIcurl_multi_socket_action(3)\fP function with the |
| \fBsockfd\fP argument set to CURL_SOCKET_TIMEOUT. You can also use the |
| \fIcurl_multi_timeout(3)\fP function to poll the value at any given time, but |
| for an event-based system using the callback is far better than relying on |
| polling the timeout value. |
| |
| Usage of \fIcurl_multi_socket(3)\fP is deprecated, whereas the function is |
| equivalent to \fIcurl_multi_socket_action(3)\fP with \fBev_bitmask\fP set to |
| 0. |
| |
| Force libcurl to (re-)check all its internal sockets and transfers instead of |
| just a single one by calling \fIcurl_multi_socket_all(3)\fP. Note that there |
| should not be any reason to use this function. |
| .SH EXAMPLE |
| .nf |
| /* the event-library gets told when there activity on the socket 'fd', |
| which we translate to a call to curl_multi_socket_action() */ |
| int running; |
| rc = curl_multi_socket(multi_handle, fd, &running); |
| .fi |
| .SH AVAILABILITY |
| This function was added in libcurl 7.15.4, and is deemed stable since |
| 7.16.0. |
| |
| \fIcurl_multi_socket(3)\fP is deprecated, use |
| \fIcurl_multi_socket_action(3)\fP instead! |
| .SH "RETURN VALUE" |
| CURLMcode type, general libcurl multi interface error code. |
| |
| The return code is for the whole multi stack. Problems still might have |
| occurred on individual transfers even when one of these functions return OK. |
| .SH "SEE ALSO" |
| .BR curl_multi_cleanup "(3), " curl_multi_init "(3), " |
| .BR curl_multi_fdset "(3), " curl_multi_info_read "(3), " |
| .BR "the hiperfifo.c example" |