Classes | Defines | Typedefs | Functions
multi.c File Reference
#include "curl_setup.h"
#include <curl/curl.h>
#include "urldata.h"
#include "transfer.h"
#include "url.h"
#include "connect.h"
#include "progress.h"
#include "easyif.h"
#include "share.h"
#include "multiif.h"
#include "sendf.h"
#include "timeval.h"
#include "http.h"
#include "select.h"
#include "warnless.h"
#include "speedcheck.h"
#include "conncache.h"
#include "multihandle.h"
#include "pipeline.h"
#include "sigpipe.h"
#include "vtls/vtls.h"
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"
Include dependency graph for multi.c:

Go to the source code of this file.

Classes

struct  Curl_sh_entry

Defines

#define CURL_CONNECTION_HASH_SIZE   97
#define CURL_MULTI_HANDLE   0x000bab1e
#define CURL_SOCKET_HASH_TABLE_SIZE   911
#define GOOD_MULTI_HANDLE(x)   ((x) && (x)->type == CURL_MULTI_HANDLE)
#define multistate(x, y)   mstate(x,y)
#define SH_READ   1
#define SH_WRITE   2

Typedefs

typedef void(* init_multistate_func )(struct Curl_easy *data)

Functions

static CURLMcode add_next_timeout (struct timeval now, struct Curl_multi *multi, struct Curl_easy *d)
static void close_all_connections (struct Curl_multi *multi)
static bool ConnectionDone (struct Curl_easy *data, struct connectdata *conn)
void Curl_expire (struct Curl_easy *data, time_t milli)
void Curl_expire_clear (struct Curl_easy *data)
void Curl_expire_latest (struct Curl_easy *data, time_t milli)
CURLMcode curl_multi_add_handle (struct Curl_multi *multi, struct Curl_easy *data)
CURLMcode Curl_multi_add_perform (struct Curl_multi *multi, struct Curl_easy *data, struct connectdata *conn)
CURLMcode curl_multi_assign (struct Curl_multi *multi, curl_socket_t s, void *hashp)
curl_off_t Curl_multi_chunk_length_penalty_size (struct Curl_multi *multi)
CURLMcode curl_multi_cleanup (struct Curl_multi *multi)
void Curl_multi_closed (struct connectdata *conn, curl_socket_t s)
void Curl_multi_connchanged (struct Curl_multi *multi)
curl_off_t Curl_multi_content_length_penalty_size (struct Curl_multi *multi)
CURLMcode curl_multi_fdset (struct Curl_multi *multi, fd_set *read_fd_set, fd_set *write_fd_set, fd_set *exc_fd_set, int *max_fd)
struct Curl_multiCurl_multi_handle (int hashsize, int chashsize)
void Curl_multi_handlePipeBreak (struct Curl_easy *data)
CURLMsgcurl_multi_info_read (struct Curl_multi *multi, int *msgs_in_queue)
struct Curl_multicurl_multi_init (void)
size_t Curl_multi_max_host_connections (struct Curl_multi *multi)
size_t Curl_multi_max_total_connections (struct Curl_multi *multi)
CURLMcode curl_multi_perform (struct Curl_multi *multi, int *running_handles)
struct curl_llistCurl_multi_pipelining_server_bl (struct Curl_multi *multi)
struct curl_llistCurl_multi_pipelining_site_bl (struct Curl_multi *multi)
void Curl_multi_process_pending_handles (struct Curl_multi *multi)
CURLMcode curl_multi_remove_handle (struct Curl_multi *multi, struct Curl_easy *data)
CURLMcode curl_multi_setopt (struct Curl_multi *multi, CURLMoption option,...)
CURLMcode curl_multi_socket (struct Curl_multi *multi, curl_socket_t s, int *running_handles)
CURLMcode curl_multi_socket_action (struct Curl_multi *multi, curl_socket_t s, int ev_bitmask, int *running_handles)
CURLMcode curl_multi_socket_all (struct Curl_multi *multi, int *running_handles)
CURLMcode curl_multi_timeout (struct Curl_multi *multi, long *timeout_ms)
CURLMcode curl_multi_wait (struct Curl_multi *multi, struct curl_waitfd extra_fds[], unsigned int extra_nfds, int timeout_ms, int *ret)
bool Curl_pipeline_wanted (const struct Curl_multi *multi, int bits)
static void do_complete (struct connectdata *conn)
static int domore_getsock (struct connectdata *conn, curl_socket_t *socks, int numsocks)
static size_t fd_key_compare (void *k1, size_t k1_len, void *k2, size_t k2_len)
static size_t hash_fd (void *key, size_t key_length, size_t slots_num)
static void mstate (struct Curl_easy *data, CURLMstate state)
static CURLMcode multi_addmsg (struct Curl_multi *multi, struct Curl_message *msg)
static CURLMcode multi_addtimeout (struct curl_llist *timeoutlist, struct timeval *stamp)
static CURLcode multi_do (struct connectdata **connp, bool *done)
static CURLcode multi_do_more (struct connectdata *conn, int *complete)
static CURLcode multi_done (struct connectdata **connp, CURLcode status, bool premature)
static void multi_freeamsg (void *a, void *b)
static void multi_freetimeout (void *a, void *b)
static int multi_getsock (struct Curl_easy *data, curl_socket_t *socks, int numsocks)
static bool multi_ischanged (struct Curl_multi *multi, bool clear)
static CURLcode multi_reconnect_request (struct connectdata **connp)
static CURLMcode multi_runsingle (struct Curl_multi *multi, struct timeval now, struct Curl_easy *data)
static CURLMcode multi_socket (struct Curl_multi *multi, bool checkall, curl_socket_t s, int ev_bitmask, int *running_handles)
static CURLMcode multi_timeout (struct Curl_multi *multi, long *timeout_ms)
static struct Curl_sh_entrysh_addentry (struct curl_hash *sh, curl_socket_t s, struct Curl_easy *data)
static void sh_delentry (struct curl_hash *sh, curl_socket_t s)
static void sh_freeentry (void *freethis)
static struct Curl_sh_entrysh_getentry (struct curl_hash *sh, curl_socket_t s)
static int sh_init (struct curl_hash *hash, int hashsize)
static void singlesocket (struct Curl_multi *multi, struct Curl_easy *data)
static int update_timer (struct Curl_multi *multi)
static int waitconnect_getsock (struct connectdata *conn, curl_socket_t *sock, int numsocks)
static int waitproxyconnect_getsock (struct connectdata *conn, curl_socket_t *sock, int numsocks)

Define Documentation

#define CURL_CONNECTION_HASH_SIZE   97

Definition at line 61 of file multi.c.

#define CURL_MULTI_HANDLE   0x000bab1e

Definition at line 63 of file multi.c.

#define CURL_SOCKET_HASH_TABLE_SIZE   911

Definition at line 58 of file multi.c.

#define GOOD_MULTI_HANDLE (   x)    ((x) && (x)->type == CURL_MULTI_HANDLE)

Definition at line 65 of file multi.c.

#define multistate (   x,
  y 
)    mstate(x,y)

Definition at line 157 of file multi.c.

#define SH_READ   1

Definition at line 174 of file multi.c.

#define SH_WRITE   2

Definition at line 175 of file multi.c.


Typedef Documentation

typedef void(* init_multistate_func)(struct Curl_easy *data)

Definition at line 105 of file multi.c.


Function Documentation

static CURLMcode add_next_timeout ( struct timeval  now,
struct Curl_multi multi,
struct Curl_easy d 
) [static]

Definition at line 2492 of file multi.c.

static void close_all_connections ( struct Curl_multi multi) [static]

Definition at line 2184 of file multi.c.

static bool ConnectionDone ( struct Curl_easy data,
struct connectdata conn 
) [static]

Definition at line 498 of file multi.c.

void Curl_expire ( struct Curl_easy data,
time_t  milli 
)

Definition at line 2917 of file multi.c.

void Curl_expire_clear ( struct Curl_easy data)

Definition at line 3015 of file multi.c.

void Curl_expire_latest ( struct Curl_easy data,
time_t  milli 
)

Definition at line 2980 of file multi.c.

CURLMcode curl_multi_add_handle ( struct Curl_multi multi,
struct Curl_easy data 
)

Definition at line 361 of file multi.c.

CURLMcode Curl_multi_add_perform ( struct Curl_multi multi,
struct Curl_easy data,
struct connectdata conn 
)

Definition at line 1141 of file multi.c.

CURLMcode curl_multi_assign ( struct Curl_multi multi,
curl_socket_t  s,
void *  hashp 
)

Definition at line 3052 of file multi.c.

curl_off_t Curl_multi_chunk_length_penalty_size ( struct Curl_multi multi)

Definition at line 3082 of file multi.c.

Definition at line 2205 of file multi.c.

void Curl_multi_closed ( struct connectdata conn,
curl_socket_t  s 
)

Definition at line 2458 of file multi.c.

void Curl_multi_connchanged ( struct Curl_multi multi)

Definition at line 1120 of file multi.c.

curl_off_t Curl_multi_content_length_penalty_size ( struct Curl_multi multi)

Definition at line 3077 of file multi.c.

CURLMcode curl_multi_fdset ( struct Curl_multi multi,
fd_set *  read_fd_set,
fd_set *  write_fd_set,
fd_set *  exc_fd_set,
int *  max_fd 
)

Definition at line 924 of file multi.c.

struct Curl_multi* Curl_multi_handle ( int  hashsize,
int  chashsize 
) [read]

Definition at line 300 of file multi.c.

void Curl_multi_handlePipeBreak ( struct Curl_easy data)

Definition at line 800 of file multi.c.

CURLMsg* curl_multi_info_read ( struct Curl_multi multi,
int *  msgs_in_queue 
)

Definition at line 2279 of file multi.c.

struct Curl_multi* curl_multi_init ( void  ) [read]

Definition at line 355 of file multi.c.

size_t Curl_multi_max_host_connections ( struct Curl_multi multi)

Definition at line 3067 of file multi.c.

size_t Curl_multi_max_total_connections ( struct Curl_multi multi)

Definition at line 3072 of file multi.c.

CURLMcode curl_multi_perform ( struct Curl_multi multi,
int *  running_handles 
)

Definition at line 2133 of file multi.c.

struct curl_llist* Curl_multi_pipelining_server_bl ( struct Curl_multi multi) [read]

Definition at line 3092 of file multi.c.

struct curl_llist* Curl_multi_pipelining_site_bl ( struct Curl_multi multi) [read]

Definition at line 3087 of file multi.c.

Definition at line 3097 of file multi.c.

CURLMcode curl_multi_remove_handle ( struct Curl_multi multi,
struct Curl_easy data 
)

Definition at line 656 of file multi.c.

CURLMcode curl_multi_setopt ( struct Curl_multi multi,
CURLMoption  option,
  ... 
)

Definition at line 2670 of file multi.c.

CURLMcode curl_multi_socket ( struct Curl_multi multi,
curl_socket_t  s,
int *  running_handles 
)

Definition at line 2740 of file multi.c.

CURLMcode curl_multi_socket_action ( struct Curl_multi multi,
curl_socket_t  s,
int  ev_bitmask,
int *  running_handles 
)

Definition at line 2749 of file multi.c.

CURLMcode curl_multi_socket_all ( struct Curl_multi multi,
int *  running_handles 
)

Definition at line 2759 of file multi.c.

CURLMcode curl_multi_timeout ( struct Curl_multi multi,
long *  timeout_ms 
)

Definition at line 2804 of file multi.c.

CURLMcode curl_multi_wait ( struct Curl_multi multi,
struct curl_waitfd  extra_fds[],
unsigned int  extra_nfds,
int  timeout_ms,
int *  ret 
)

Definition at line 973 of file multi.c.

bool Curl_pipeline_wanted ( const struct Curl_multi multi,
int  bits 
)

Definition at line 795 of file multi.c.

static void do_complete ( struct connectdata conn) [static]

Definition at line 1223 of file multi.c.

static int domore_getsock ( struct connectdata conn,
curl_socket_t socks,
int  numsocks 
) [static]

Definition at line 848 of file multi.c.

static size_t fd_key_compare ( void *  k1,
size_t  k1_len,
void *  k2,
size_t  k2_len 
) [static]

Definition at line 235 of file multi.c.

static size_t hash_fd ( void *  key,
size_t  key_length,
size_t  slots_num 
) [static]

Definition at line 242 of file multi.c.

static void mstate ( struct Curl_easy data,
CURLMstate  state 
) [static]

Definition at line 108 of file multi.c.

static CURLMcode multi_addmsg ( struct Curl_multi multi,
struct Curl_message msg 
) [static]

Definition at line 280 of file multi.c.

static CURLMcode multi_addtimeout ( struct curl_llist timeoutlist,
struct timeval stamp 
) [static]

Definition at line 2872 of file multi.c.

static CURLcode multi_do ( struct connectdata **  connp,
bool done 
) [static]

Definition at line 1231 of file multi.c.

static CURLcode multi_do_more ( struct connectdata conn,
int *  complete 
) [static]

Definition at line 1280 of file multi.c.

static CURLcode multi_done ( struct connectdata **  connp,
CURLcode  status,
bool  premature 
) [static]

Definition at line 527 of file multi.c.

static void multi_freeamsg ( void *  a,
void *  b 
) [static]

Definition at line 294 of file multi.c.

static void multi_freetimeout ( void *  a,
void *  b 
) [static]

Definition at line 2856 of file multi.c.

static int multi_getsock ( struct Curl_easy data,
curl_socket_t socks,
int  numsocks 
) [static]

Definition at line 858 of file multi.c.

static bool multi_ischanged ( struct Curl_multi multi,
bool  clear 
) [static]

Definition at line 1133 of file multi.c.

static CURLcode multi_reconnect_request ( struct connectdata **  connp) [static]

Definition at line 1163 of file multi.c.

static CURLMcode multi_runsingle ( struct Curl_multi multi,
struct timeval  now,
struct Curl_easy data 
) [static]

Definition at line 1296 of file multi.c.

static CURLMcode multi_socket ( struct Curl_multi multi,
bool  checkall,
curl_socket_t  s,
int  ev_bitmask,
int *  running_handles 
) [static]

Definition at line 2535 of file multi.c.

static CURLMcode multi_timeout ( struct Curl_multi multi,
long *  timeout_ms 
) [static]

Definition at line 2769 of file multi.c.

static struct Curl_sh_entry* sh_addentry ( struct curl_hash sh,
curl_socket_t  s,
struct Curl_easy data 
) [static, read]

Definition at line 188 of file multi.c.

static void sh_delentry ( struct curl_hash sh,
curl_socket_t  s 
) [static]

Definition at line 218 of file multi.c.

static void sh_freeentry ( void *  freethis) [static]

Definition at line 228 of file multi.c.

static struct Curl_sh_entry* sh_getentry ( struct curl_hash sh,
curl_socket_t  s 
) [static, read]

Definition at line 178 of file multi.c.

static int sh_init ( struct curl_hash hash,
int  hashsize 
) [static]

Definition at line 268 of file multi.c.

static void singlesocket ( struct Curl_multi multi,
struct Curl_easy data 
) [static]

Definition at line 2310 of file multi.c.

static int update_timer ( struct Curl_multi multi) [static]

Definition at line 2818 of file multi.c.

static int waitconnect_getsock ( struct connectdata conn,
curl_socket_t sock,
int  numsocks 
) [static]

Definition at line 805 of file multi.c.

static int waitproxyconnect_getsock ( struct connectdata conn,
curl_socket_t sock,
int  numsocks 
) [static]

Definition at line 831 of file multi.c.



rc_visard_driver
Author(s): Heiko Hirschmueller , Christian Emmerich , Felix Ruess
autogenerated on Thu Jun 6 2019 20:43:09