ReactOS 0.4.16-dev-1946-g52006dd
multi.h File Reference
#include "curl.h"
Include dependency graph for multi.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  CURLMsg
 
struct  curl_waitfd
 

Macros

#define CURLM_CALL_MULTI_SOCKET   CURLM_CALL_MULTI_PERFORM
 
#define CURLPIPE_NOTHING   0L
 
#define CURLPIPE_HTTP1   1L
 
#define CURLPIPE_MULTIPLEX   2L
 
#define CURL_WAIT_POLLIN   0x0001
 
#define CURL_WAIT_POLLPRI   0x0002
 
#define CURL_WAIT_POLLOUT   0x0004
 
#define CURL_POLL_NONE   0
 
#define CURL_POLL_IN   1
 
#define CURL_POLL_OUT   2
 
#define CURL_POLL_INOUT   3
 
#define CURL_POLL_REMOVE   4
 
#define CURL_SOCKET_TIMEOUT   CURL_SOCKET_BAD
 
#define CURL_CSELECT_IN   0x01
 
#define CURL_CSELECT_OUT   0x02
 
#define CURL_CSELECT_ERR   0x04
 
#define curl_multi_socket(x, y, z)   curl_multi_socket_action(x,y,0,z)
 
#define CURL_PUSH_OK   0
 
#define CURL_PUSH_DENY   1
 
#define CURL_PUSH_ERROROUT   2 /* added in 7.72.0 */
 

Typedefs

typedef void CURLM
 
typedef struct CURLMsg CURLMsg
 
typedef int(* curl_socket_callback) (CURL *easy, curl_socket_t s, int what, void *userp, void *socketp)
 
typedef int(* curl_multi_timer_callback) (CURLM *multi, long timeout_ms, void *userp)
 
typedef int(* curl_push_callback) (CURL *parent, CURL *easy, size_t num_headers, struct curl_pushheaders *headers, void *userp)
 

Enumerations

enum  CURLMcode {
  CURLM_CALL_MULTI_PERFORM = -1 , CURLM_OK , CURLM_BAD_HANDLE , CURLM_BAD_EASY_HANDLE ,
  CURLM_OUT_OF_MEMORY , CURLM_INTERNAL_ERROR , CURLM_BAD_SOCKET , CURLM_UNKNOWN_OPTION ,
  CURLM_ADDED_ALREADY , CURLM_RECURSIVE_API_CALL , CURLM_WAKEUP_FAILURE , CURLM_BAD_FUNCTION_ARGUMENT ,
  CURLM_ABORTED_BY_CALLBACK , CURLM_UNRECOVERABLE_POLL , CURLM_LAST
}
 
enum  CURLMSG { CURLMSG_NONE , CURLMSG_DONE , CURLMSG_LAST }
 
enum  CURLMoption {
  CURLOPT =(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1) , CURLOPT =(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1) , CURLOPT =(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1) , CURLOPT =(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1) ,
  CURLOPT =(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1) , CURLOPT =(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1) , CURLOPT =(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1) , CURLOPT =(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1) ,
  CURLOPT =(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1) , CURLOPT =(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1) , CURLOPT =(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1) , CURLOPT =(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1) ,
  CURLOPT =(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1) , CURLOPT =(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1) , CURLOPT =(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1) , CURLOPT =(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1) ,
  CURLMOPT_LASTENTRY
}
 

Functions

CURL_EXTERN CURLMcurl_multi_init (void)
 
CURL_EXTERN CURLMcode curl_multi_add_handle (CURLM *multi_handle, CURL *curl_handle)
 
CURL_EXTERN CURLMcode curl_multi_remove_handle (CURLM *multi_handle, CURL *curl_handle)
 
CURL_EXTERN CURLMcode curl_multi_fdset (CURLM *multi_handle, fd_set *read_fd_set, fd_set *write_fd_set, fd_set *exc_fd_set, int *max_fd)
 
CURL_EXTERN CURLMcode curl_multi_wait (CURLM *multi_handle, struct curl_waitfd extra_fds[], unsigned int extra_nfds, int timeout_ms, int *ret)
 
CURL_EXTERN CURLMcode curl_multi_poll (CURLM *multi_handle, struct curl_waitfd extra_fds[], unsigned int extra_nfds, int timeout_ms, int *ret)
 
CURL_EXTERN CURLMcode curl_multi_wakeup (CURLM *multi_handle)
 
CURL_EXTERN CURLMcode curl_multi_perform (CURLM *multi_handle, int *running_handles)
 
CURL_EXTERN CURLMcode curl_multi_cleanup (CURLM *multi_handle)
 
CURL_EXTERN CURLMsgcurl_multi_info_read (CURLM *multi_handle, int *msgs_in_queue)
 
CURL_EXTERN const charcurl_multi_strerror (CURLMcode)
 
CURL_EXTERN CURLMcode curl_multi_socket (CURLM *multi_handle, curl_socket_t s, int *running_handles)
 
CURL_EXTERN CURLMcode curl_multi_socket_action (CURLM *multi_handle, curl_socket_t s, int ev_bitmask, int *running_handles)
 
CURL_EXTERN CURLMcode curl_multi_socket_all (CURLM *multi_handle, int *running_handles)
 
CURL_EXTERN CURLMcode curl_multi_timeout (CURLM *multi_handle, long *milliseconds)
 
CURL_EXTERN CURLMcode curl_multi_setopt (CURLM *multi_handle, CURLMoption option,...)
 
CURL_EXTERN CURLMcode curl_multi_assign (CURLM *multi_handle, curl_socket_t sockfd, void *sockp)
 
CURL_EXTERN charcurl_pushheader_bynum (struct curl_pushheaders *h, size_t num)
 
CURL_EXTERN charcurl_pushheader_byname (struct curl_pushheaders *h, const char *name)
 

Macro Definition Documentation

◆ CURL_CSELECT_ERR

#define CURL_CSELECT_ERR   0x04

Definition at line 297 of file multi.h.

◆ CURL_CSELECT_IN

#define CURL_CSELECT_IN   0x01

Definition at line 295 of file multi.h.

◆ CURL_CSELECT_OUT

#define CURL_CSELECT_OUT   0x02

Definition at line 296 of file multi.h.

◆ curl_multi_socket

#define curl_multi_socket (   x,
  y,
  z 
)    curl_multi_socket_action(x,y,0,z)

Definition at line 336 of file multi.h.

◆ CURL_POLL_IN

#define CURL_POLL_IN   1

Definition at line 288 of file multi.h.

◆ CURL_POLL_INOUT

#define CURL_POLL_INOUT   3

Definition at line 290 of file multi.h.

◆ CURL_POLL_NONE

#define CURL_POLL_NONE   0

Definition at line 287 of file multi.h.

◆ CURL_POLL_OUT

#define CURL_POLL_OUT   2

Definition at line 289 of file multi.h.

◆ CURL_POLL_REMOVE

#define CURL_POLL_REMOVE   4

Definition at line 291 of file multi.h.

◆ CURL_PUSH_DENY

#define CURL_PUSH_DENY   1

Definition at line 440 of file multi.h.

◆ CURL_PUSH_ERROROUT

#define CURL_PUSH_ERROROUT   2 /* added in 7.72.0 */

Definition at line 441 of file multi.h.

◆ CURL_PUSH_OK

#define CURL_PUSH_OK   0

Definition at line 439 of file multi.h.

◆ CURL_SOCKET_TIMEOUT

#define CURL_SOCKET_TIMEOUT   CURL_SOCKET_BAD

Definition at line 293 of file multi.h.

◆ CURL_WAIT_POLLIN

#define CURL_WAIT_POLLIN   0x0001

Definition at line 114 of file multi.h.

◆ CURL_WAIT_POLLOUT

#define CURL_WAIT_POLLOUT   0x0004

Definition at line 116 of file multi.h.

◆ CURL_WAIT_POLLPRI

#define CURL_WAIT_POLLPRI   0x0002

Definition at line 115 of file multi.h.

◆ CURLM_CALL_MULTI_SOCKET

#define CURLM_CALL_MULTI_SOCKET   CURLM_CALL_MULTI_PERFORM

Definition at line 87 of file multi.h.

◆ CURLPIPE_HTTP1

#define CURLPIPE_HTTP1   1L

Definition at line 91 of file multi.h.

◆ CURLPIPE_MULTIPLEX

#define CURLPIPE_MULTIPLEX   2L

Definition at line 92 of file multi.h.

◆ CURLPIPE_NOTHING

#define CURLPIPE_NOTHING   0L

Definition at line 90 of file multi.h.

Typedef Documentation

◆ curl_multi_timer_callback

typedef int(* curl_multi_timer_callback) (CURLM *multi, long timeout_ms, void *userp)

Definition at line 316 of file multi.h.

◆ curl_push_callback

typedef int(* curl_push_callback) (CURL *parent, CURL *easy, size_t num_headers, struct curl_pushheaders *headers, void *userp)

Definition at line 450 of file multi.h.

◆ curl_socket_callback

typedef int(* curl_socket_callback) (CURL *easy, curl_socket_t s, int what, void *userp, void *socketp)

Definition at line 299 of file multi.h.

◆ CURLM

typedef void CURLM

Definition at line 60 of file multi.h.

◆ CURLMsg

Definition at line 109 of file multi.h.

Enumeration Type Documentation

◆ CURLMcode

Enumerator
CURLM_CALL_MULTI_PERFORM 
CURLM_OK 
CURLM_BAD_HANDLE 
CURLM_BAD_EASY_HANDLE 
CURLM_OUT_OF_MEMORY 
CURLM_INTERNAL_ERROR 
CURLM_BAD_SOCKET 
CURLM_UNKNOWN_OPTION 
CURLM_ADDED_ALREADY 
CURLM_RECURSIVE_API_CALL 
CURLM_WAKEUP_FAILURE 
CURLM_BAD_FUNCTION_ARGUMENT 
CURLM_ABORTED_BY_CALLBACK 
CURLM_UNRECOVERABLE_POLL 
CURLM_LAST 

Definition at line 63 of file multi.h.

63 {
64 CURLM_CALL_MULTI_PERFORM = -1, /* please call curl_multi_perform() or
65 curl_multi_socket*() soon */
67 CURLM_BAD_HANDLE, /* the passed-in handle is not a valid CURLM handle */
68 CURLM_BAD_EASY_HANDLE, /* an easy handle was not good/valid */
69 CURLM_OUT_OF_MEMORY, /* if you ever get this, you're in deep sh*t */
70 CURLM_INTERNAL_ERROR, /* this is a libcurl bug */
71 CURLM_BAD_SOCKET, /* the passed in socket argument did not match */
72 CURLM_UNKNOWN_OPTION, /* curl_multi_setopt() with unsupported option */
73 CURLM_ADDED_ALREADY, /* an easy handle already added to a multi handle was
74 attempted to get added - again */
75 CURLM_RECURSIVE_API_CALL, /* an api function was called from inside a
76 callback */
77 CURLM_WAKEUP_FAILURE, /* wakeup is unavailable or failed */
78 CURLM_BAD_FUNCTION_ARGUMENT, /* function called with a bad parameter */
82} CURLMcode;
CURLMcode
Definition: multi.h:63
@ CURLM_RECURSIVE_API_CALL
Definition: multi.h:75
@ CURLM_ADDED_ALREADY
Definition: multi.h:73
@ CURLM_BAD_SOCKET
Definition: multi.h:71
@ CURLM_WAKEUP_FAILURE
Definition: multi.h:77
@ CURLM_OUT_OF_MEMORY
Definition: multi.h:69
@ CURLM_INTERNAL_ERROR
Definition: multi.h:70
@ CURLM_BAD_HANDLE
Definition: multi.h:67
@ CURLM_ABORTED_BY_CALLBACK
Definition: multi.h:79
@ CURLM_BAD_FUNCTION_ARGUMENT
Definition: multi.h:78
@ CURLM_CALL_MULTI_PERFORM
Definition: multi.h:64
@ CURLM_LAST
Definition: multi.h:81
@ CURLM_OK
Definition: multi.h:66
@ CURLM_BAD_EASY_HANDLE
Definition: multi.h:68
@ CURLM_UNRECOVERABLE_POLL
Definition: multi.h:80
@ CURLM_UNKNOWN_OPTION
Definition: multi.h:72

◆ CURLMoption

Enumerator
CURLOPT 
CURLOPT 
CURLOPT 
CURLOPT 
CURLOPT 
CURLOPT 
CURLOPT 
CURLOPT 
CURLOPT 
CURLOPT 
CURLOPT 
CURLOPT 
CURLOPT 
CURLOPT 
CURLOPT 
CURLOPT 
CURLMOPT_LASTENTRY 

Definition at line 351 of file multi.h.

351 {
352 /* This is the socket callback function pointer */
353 CURLOPT(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1),
354
355 /* This is the argument passed to the socket callback */
356 CURLOPT(CURLMOPT_SOCKETDATA, CURLOPTTYPE_OBJECTPOINT, 2),
357
358 /* set to 1 to enable pipelining for this multi handle */
359 CURLOPT(CURLMOPT_PIPELINING, CURLOPTTYPE_LONG, 3),
360
361 /* This is the timer callback function pointer */
362 CURLOPT(CURLMOPT_TIMERFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 4),
363
364 /* This is the argument passed to the timer callback */
365 CURLOPT(CURLMOPT_TIMERDATA, CURLOPTTYPE_OBJECTPOINT, 5),
366
367 /* maximum number of entries in the connection cache */
368 CURLOPT(CURLMOPT_MAXCONNECTS, CURLOPTTYPE_LONG, 6),
369
370 /* maximum number of (pipelining) connections to one host */
371 CURLOPT(CURLMOPT_MAX_HOST_CONNECTIONS, CURLOPTTYPE_LONG, 7),
372
373 /* maximum number of requests in a pipeline */
374 CURLOPT(CURLMOPT_MAX_PIPELINE_LENGTH, CURLOPTTYPE_LONG, 8),
375
376 /* a connection with a content-length longer than this
377 will not be considered for pipelining */
378 CURLOPT(CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, CURLOPTTYPE_OFF_T, 9),
379
380 /* a connection with a chunk length longer than this
381 will not be considered for pipelining */
382 CURLOPT(CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, CURLOPTTYPE_OFF_T, 10),
383
384 /* a list of site names(+port) that are blocked from pipelining */
385 CURLOPT(CURLMOPT_PIPELINING_SITE_BL, CURLOPTTYPE_OBJECTPOINT, 11),
386
387 /* a list of server types that are blocked from pipelining */
388 CURLOPT(CURLMOPT_PIPELINING_SERVER_BL, CURLOPTTYPE_OBJECTPOINT, 12),
389
390 /* maximum number of open connections in total */
391 CURLOPT(CURLMOPT_MAX_TOTAL_CONNECTIONS, CURLOPTTYPE_LONG, 13),
392
393 /* This is the server push callback function pointer */
394 CURLOPT(CURLMOPT_PUSHFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 14),
395
396 /* This is the argument passed to the server push callback */
397 CURLOPT(CURLMOPT_PUSHDATA, CURLOPTTYPE_OBJECTPOINT, 15),
398
399 /* maximum number of concurrent streams to support on a connection */
400 CURLOPT(CURLMOPT_MAX_CONCURRENT_STREAMS, CURLOPTTYPE_LONG, 16),
401
402 CURLMOPT_LASTENTRY /* the last unused */
#define CURLOPTTYPE_FUNCTIONPOINT
Definition: curl.h:1047
#define CURLOPTTYPE_OBJECTPOINT
Definition: curl.h:1046
#define CURLOPTTYPE_LONG
Definition: curl.h:1045
#define CURLOPTTYPE_OFF_T
Definition: curl.h:1048
CURLMoption
Definition: multi.h:351
@ CURLOPT
Definition: multi.h:353
@ CURLMOPT_LASTENTRY
Definition: multi.h:402

◆ CURLMSG

Enumerator
CURLMSG_NONE 
CURLMSG_DONE 
CURLMSG_LAST 

Definition at line 94 of file multi.h.

94 {
95 CURLMSG_NONE, /* first, not used */
96 CURLMSG_DONE, /* This easy handle has completed. 'result' contains
97 the CURLcode of the transfer */
98 CURLMSG_LAST /* last, not used */
99} CURLMSG;
CURLMSG
Definition: multi.h:94
@ CURLMSG_DONE
Definition: multi.h:96
@ CURLMSG_LAST
Definition: multi.h:98
@ CURLMSG_NONE
Definition: multi.h:95

Function Documentation

◆ curl_multi_add_handle()

CURL_EXTERN CURLMcode curl_multi_add_handle ( CURLM multi_handle,
CURL curl_handle 
)

◆ curl_multi_assign()

CURL_EXTERN CURLMcode curl_multi_assign ( CURLM multi_handle,
curl_socket_t  sockfd,
void sockp 
)

◆ curl_multi_cleanup()

CURL_EXTERN CURLMcode curl_multi_cleanup ( CURLM multi_handle)

◆ curl_multi_fdset()

CURL_EXTERN CURLMcode curl_multi_fdset ( CURLM multi_handle,
fd_set read_fd_set,
fd_set write_fd_set,
fd_set exc_fd_set,
int max_fd 
)

◆ curl_multi_info_read()

CURL_EXTERN CURLMsg * curl_multi_info_read ( CURLM multi_handle,
int msgs_in_queue 
)

◆ curl_multi_init()

CURL_EXTERN CURLM * curl_multi_init ( void  )

◆ curl_multi_perform()

CURL_EXTERN CURLMcode curl_multi_perform ( CURLM multi_handle,
int running_handles 
)

◆ curl_multi_poll()

CURL_EXTERN CURLMcode curl_multi_poll ( CURLM multi_handle,
struct curl_waitfd  extra_fds[],
unsigned int  extra_nfds,
int  timeout_ms,
int ret 
)

◆ curl_multi_remove_handle()

CURL_EXTERN CURLMcode curl_multi_remove_handle ( CURLM multi_handle,
CURL curl_handle 
)

◆ curl_multi_setopt()

CURL_EXTERN CURLMcode curl_multi_setopt ( CURLM multi_handle,
CURLMoption  option,
  ... 
)

◆ curl_multi_socket()

CURL_EXTERN CURLMcode curl_multi_socket ( CURLM multi_handle,
curl_socket_t  s,
int running_handles 
)

◆ curl_multi_socket_action()

CURL_EXTERN CURLMcode curl_multi_socket_action ( CURLM multi_handle,
curl_socket_t  s,
int  ev_bitmask,
int running_handles 
)

◆ curl_multi_socket_all()

CURL_EXTERN CURLMcode curl_multi_socket_all ( CURLM multi_handle,
int running_handles 
)

◆ curl_multi_strerror()

CURL_EXTERN const char * curl_multi_strerror ( CURLMcode  )

◆ curl_multi_timeout()

CURL_EXTERN CURLMcode curl_multi_timeout ( CURLM multi_handle,
long milliseconds 
)

◆ curl_multi_wait()

CURL_EXTERN CURLMcode curl_multi_wait ( CURLM multi_handle,
struct curl_waitfd  extra_fds[],
unsigned int  extra_nfds,
int  timeout_ms,
int ret 
)

◆ curl_multi_wakeup()

CURL_EXTERN CURLMcode curl_multi_wakeup ( CURLM multi_handle)

◆ curl_pushheader_byname()

CURL_EXTERN char * curl_pushheader_byname ( struct curl_pushheaders *  h,
const char name 
)

◆ curl_pushheader_bynum()

CURL_EXTERN char * curl_pushheader_bynum ( struct curl_pushheaders *  h,
size_t  num 
)