aboutsummaryrefslogtreecommitdiff
path: root/vendor/curl/c/multi.h
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/curl/c/multi.h')
-rw-r--r--vendor/curl/c/multi.h74
1 files changed, 73 insertions, 1 deletions
diff --git a/vendor/curl/c/multi.h b/vendor/curl/c/multi.h
index 42469bb56..4e30637ef 100644
--- a/vendor/curl/c/multi.h
+++ b/vendor/curl/c/multi.h
@@ -50,7 +50,7 @@
*/
#include "curl.h"
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" {
#endif
@@ -395,9 +395,29 @@ typedef enum {
/* maximum number of concurrent streams to support on a connection */
CURLOPT(CURLMOPT_MAX_CONCURRENT_STREAMS, CURLOPTTYPE_LONG, 16),
+ /* network has changed, adjust caches/connection reuse */
+ CURLOPT(CURLMOPT_NETWORK_CHANGED, CURLOPTTYPE_LONG, 17),
+
+ /* This is the notify callback function pointer */
+ CURLOPT(CURLMOPT_NOTIFYFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 18),
+
+ /* This is the argument passed to the notify callback */
+ CURLOPT(CURLMOPT_NOTIFYDATA, CURLOPTTYPE_OBJECTPOINT, 19),
+
CURLMOPT_LASTENTRY /* the last unused */
} CURLMoption;
+/* Definition of bits for the CURLMOPT_NETWORK_CHANGED argument: */
+
+/* - CURLMNWC_CLEAR_CONNS tells libcurl to prevent further reuse of existing
+ connections. Connections that are idle will be closed. Ongoing transfers
+ will continue with the connection they have. */
+#define CURLMNWC_CLEAR_CONNS (1L<<0)
+
+/* - CURLMNWC_CLEAR_DNS tells libcurl to prevent further reuse of existing
+ connections. Connections that are idle will be closed. Ongoing transfers
+ will continue with the connection they have. */
+#define CURLMNWC_CLEAR_DNS (1L<<0)
/*
* Name: curl_multi_setopt()
@@ -434,6 +454,38 @@ CURL_EXTERN CURLMcode curl_multi_assign(CURLM *multi_handle,
*/
CURL_EXTERN CURL **curl_multi_get_handles(CURLM *multi_handle);
+
+typedef enum {
+ CURLMINFO_NONE, /* first, never use this */
+ /* The number of easy handles currently managed by the multi handle,
+ * e.g. have been added but not yet removed. */
+ CURLMINFO_XFERS_CURRENT = 1,
+ /* The number of easy handles running, e.g. not done and not queueing. */
+ CURLMINFO_XFERS_RUNNING = 2,
+ /* The number of easy handles waiting to start, e.g. for a connection
+ * to become available due to limits on parallelism, max connections
+ * or other factors. */
+ CURLMINFO_XFERS_PENDING = 3,
+ /* The number of easy handles finished, waiting for their results to
+ * be read via `curl_multi_info_read()`. */
+ CURLMINFO_XFERS_DONE = 4,
+ /* The total number of easy handles added to the multi handle, ever. */
+ CURLMINFO_XFERS_ADDED = 5,
+
+ CURLMINFO_LASTENTRY /* the last unused */
+} CURLMinfo_offt;
+
+/*
+ * Name: curl_multi_get_offt()
+ *
+ * Desc: Retrieves a numeric value for the `CURLMINFO_*` enums.
+ *
+ * Returns: CULRM_OK or error when value could not be obtained.
+ */
+CURL_EXTERN CURLMcode curl_multi_get_offt(CURLM *multi_handle,
+ CURLMinfo_offt info,
+ curl_off_t *pvalue);
+
/*
* Name: curl_push_callback
*
@@ -474,6 +526,26 @@ CURL_EXTERN CURLMcode curl_multi_waitfds(CURLM *multi,
unsigned int size,
unsigned int *fd_count);
+/*
+ * Notifications dispatched by a multi handle, when enabled.
+ */
+#define CURLMNOTIFY_INFO_READ 0
+#define CURLMNOTIFY_EASY_DONE 1
+
+/*
+ * Callback to install via CURLMOPT_NOTIFYFUNCTION.
+ */
+typedef void (*curl_notify_callback)(CURLM *multi,
+ unsigned int notification,
+ CURL *easy,
+ void *user_data);
+
+CURL_EXTERN CURLMcode curl_multi_notify_disable(CURLM *multi,
+ unsigned int notification);
+
+CURL_EXTERN CURLMcode curl_multi_notify_enable(CURLM *multi,
+ unsigned int notification);
+
#ifdef __cplusplus
} /* end of extern "C" */
#endif