mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
The inital early embryos to describe the curl_multi_socket() API. Committed
now to enable them to get added as web pages easier, they are not ready for anything "real" just yet.
This commit is contained in:
parent
b466ef2581
commit
a718cb05ff
82
docs/libcurl/curl_multi_socket.3
Normal file
82
docs/libcurl/curl_multi_socket.3
Normal file
@ -0,0 +1,82 @@
|
||||
.\" $Id$
|
||||
.\"
|
||||
.TH curl_multi_socket 3 "21 Dec 2005" "libcurl 7.16.0" "libcurl Manual"
|
||||
.SH NAME
|
||||
curl_multi_socket - reads/writes available data
|
||||
.SH SYNOPSIS
|
||||
#include <curl/curl.h>
|
||||
|
||||
CURLMcode curl_multi_socket(CURLM * multi_handle,
|
||||
curl_socket_t sockfd,
|
||||
CURL *easy,
|
||||
curl_socket_callback callback,
|
||||
void *userp);
|
||||
|
||||
CURLMcode curl_multi_socket_all(CURLM *multi_handle,
|
||||
curl_socket_callback callback,
|
||||
void *userp);
|
||||
.SH DESCRIPTION
|
||||
Alternative versions of \fIcurl_multi_perform()\fP that allows the application
|
||||
to pass in one of the file descriptors/sockets that have been detected to have
|
||||
\&"action" on them and let libcurl perform. This allows libcurl to not have to
|
||||
scan through all possible file descriptors to check for action. The
|
||||
application is recommended to pass in the \fBeasy\fP argument (or set it to
|
||||
CURL_EASY_NONE) to make libcurl figure out the internal structure even faster
|
||||
and easier. If the easy argument is set to something else than
|
||||
CURL_EASY_NONE, the \fBsockfd\fP argument will be ignored by libcurl.
|
||||
|
||||
These functions inform the application about updates in the socket (file
|
||||
descriptor) status by doing none, one or multiple calls to the
|
||||
curl_socket_callback given in the \fBcallback\fP argument. They update the
|
||||
status with changes since the previous time this function was used. If
|
||||
\fBcallback\fP is NULL, no callback will be called. A status change may also
|
||||
be a new timeout only, having the same IN/OUT status as before.
|
||||
|
||||
If a previous wait for socket action(s) timed out, you should call this
|
||||
function with the socket argument set to CURL_SOCKET_TIMEOUT. If you want to
|
||||
force libcurl to (re-)check all its internal sockets, and call the callback
|
||||
with status for all sockets no matter what the previous state is, you call
|
||||
curl_multi_socket_all() instead.
|
||||
|
||||
curl_multi_perform() is the equivalent of calling
|
||||
curl_multi_socket_all(handle, NULL, NULL);
|
||||
|
||||
Regarding the timeout argument in the callback: it is the timeout (in
|
||||
milliseconds) for waiting on action on this socket (and the given time period
|
||||
starts when the callback is called) until you should call curl_multi_socket()
|
||||
with the timeout stuff mentioned above. If "actions" happens on the socket
|
||||
before the timeout happens, remember that the timout timer keeps ticking until
|
||||
told otherwise.
|
||||
|
||||
The "what" argument has one of five values:
|
||||
.RS
|
||||
.IP "CURL_POLL_NONE (0)"
|
||||
register, not interested in readiness (yet)
|
||||
.IP "CURL_POLL_IN (1)"
|
||||
register, interested in read readiness
|
||||
.IP "CURL_POLL_OUT (2)"
|
||||
register, interested in write readiness
|
||||
.IP "CURL_POLL_INOUT (3)"
|
||||
register, interested in both read and write readiness
|
||||
.IP "CURL_POLL_REMOVE (4)"
|
||||
deregister
|
||||
.RE
|
||||
.SH "RETURN VALUE"
|
||||
CURLMcode type, general libcurl multi interface error code.
|
||||
|
||||
If you receive \fICURLM_CALL_MULTI_PERFORM\fP, this basically means that you
|
||||
should call \fIcurl_multi_perform\fP again, before you select() on more
|
||||
actions. You don't have to do it immediately, but the return code means that
|
||||
libcurl may have more data available to return or that there may be more data
|
||||
to send off before it is "satisfied".
|
||||
|
||||
NOTE that this only returns errors etc regarding the whole multi stack. There
|
||||
might still have occurred problems on individual transfers even when this
|
||||
function returns OK.
|
||||
.SH "TYPICAL USAGE"
|
||||
Call curl_multi_socket_all() first. Setup a "collection" of sockets to
|
||||
supervise, then when action happens call curl_multi_socket() for the easy
|
||||
handle that got the action.
|
||||
.SH "SEE ALSO"
|
||||
.BR curl_multi_cleanup "(3), " curl_multi_init "(3), "
|
||||
.BR curl_multi_fdset "(3), " curl_multi_info_read "(3)"
|
1
docs/libcurl/curl_multi_socket_all.3
Normal file
1
docs/libcurl/curl_multi_socket_all.3
Normal file
@ -0,0 +1 @@
|
||||
.so man3/curl_multi_socket.3
|
Loading…
Reference in New Issue
Block a user