|
|
|
@ -17,13 +17,14 @@ |
|
|
|
|
|
|
|
|
|
namespace { |
|
|
|
|
|
|
|
|
|
static std::atomic<bool> enable_http_logging = false; |
|
|
|
|
|
|
|
|
|
struct CURLGlobalInitializer { |
|
|
|
|
CURLGlobalInitializer() { curl_global_init(CURL_GLOBAL_DEFAULT); } |
|
|
|
|
~CURLGlobalInitializer() { curl_global_cleanup(); } |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static CURLGlobalInitializer curl_initializer; |
|
|
|
|
static std::atomic<bool> enable_http_logging = false; |
|
|
|
|
|
|
|
|
|
template <class T> |
|
|
|
|
struct MultiPartWriter { |
|
|
|
|
T *buf; |
|
|
|
@ -98,8 +99,6 @@ void enableHttpLogging(bool enable) { |
|
|
|
|
|
|
|
|
|
template <class T> |
|
|
|
|
bool httpDownload(const std::string &url, T &buf, size_t chunk_size, size_t content_length, std::atomic<bool> *abort) { |
|
|
|
|
static CURLGlobalInitializer curl_initializer; |
|
|
|
|
|
|
|
|
|
int parts = 1; |
|
|
|
|
if (chunk_size > 0 && content_length > 10 * 1024 * 1024) { |
|
|
|
|
parts = std::nearbyint(content_length / (float)chunk_size); |
|
|
|
|