summaryrefslogtreecommitdiff
path: root/src/tool_operate.h
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2019-07-20 19:14:00 +0200
committerDaniel Stenberg <daniel@haxx.se>2019-07-20 19:14:16 +0200
commitb88940850002a3f1c25bc6488b95ad30eb80d696 (patch)
tree9af44fc7571282e3adc379dbbff06d4d34c6c2b6 /src/tool_operate.h
parent14a385b3aec7f2f1c6a5247cf41c785990dfb39e (diff)
downloadcurl-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.h48
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 */