diff options
author | Daniel Stenberg <daniel@haxx.se> | 2019-07-20 19:14:00 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2019-07-20 19:14:16 +0200 |
commit | b88940850002a3f1c25bc6488b95ad30eb80d696 (patch) | |
tree | 9af44fc7571282e3adc379dbbff06d4d34c6c2b6 /src/tool_operate.h | |
parent | 14a385b3aec7f2f1c6a5247cf41c785990dfb39e (diff) | |
download | curl-b88940850002a3f1c25bc6488b95ad30eb80d696.tar.gz |
curl: support parallel transfers
This is done by making sure each individual transfer is first added to a
linked list as then they can be performed serially, or at will, in
parallel.
Closes #3804
Diffstat (limited to 'src/tool_operate.h')
-rw-r--r-- | src/tool_operate.h | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/src/tool_operate.h b/src/tool_operate.h index b84388bc5..60257fc60 100644 --- a/src/tool_operate.h +++ b/src/tool_operate.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2019, 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 @@ -22,7 +22,53 @@ * ***************************************************************************/ #include "tool_setup.h" +#include "tool_cb_hdr.h" +#include "tool_cb_prg.h" +#include "tool_sdecls.h" + +struct per_transfer { + /* double linked */ + struct per_transfer *next; + struct per_transfer *prev; + struct OperationConfig *config; /* for this transfer */ + CURL *curl; + long retry_numretries; + long retry_sleep_default; + long retry_sleep; + struct timeval retrystart; + bool metalink; /* nonzero for metalink download. */ + bool metalink_next_res; + metalinkfile *mlfile; + metalink_resource *mlres; + char *this_url; + char *outfile; + bool infdopen; /* TRUE if infd needs closing */ + int infd; + struct ProgressData progressbar; + struct OutStruct outs; + struct OutStruct heads; + struct InStruct input; + struct HdrCbData hdrcbdata; + char errorbuffer[CURL_ERROR_SIZE]; + + bool added; /* set TRUE when added to the multi handle */ + + /* for parallel progress bar */ + curl_off_t dltotal; + curl_off_t dlnow; + curl_off_t ultotal; + curl_off_t ulnow; + bool dltotal_added; /* if the total has been added from this */ + bool ultotal_added; + + /* NULL or malloced */ + char *separator_err; + char *separator; + char *uploadfile; +}; CURLcode operate(struct GlobalConfig *config, int argc, argv_item_t argv[]); +extern struct per_transfer *transfers; /* first node */ + #endif /* HEADER_CURL_TOOL_OPERATE_H */ |