1#ifndef ENGINE_SHARED_HTTP_CURL_H
2#define ENGINE_SHARED_HTTP_CURL_H
5#if !defined(CONF_PLATFORM_EMSCRIPTEN)
13#include <condition_variable>
17#include <unordered_map>
27 void Header(
const char *pNameColonValue)
override;
40 size_t OnHeader(
char *pHeader,
size_t HeaderSize);
45 static int ProgressCallback(
void *pUser,
double DlTotal,
double DlCurr,
double UlTotal,
double UlCurr);
47 static size_t WriteCallback(
char *pData,
size_t Size,
size_t Number,
void *pUser);
54 bool Init(std::chrono::milliseconds ShutdownDelay)
override;
59 void Run(std::shared_ptr<IHttpRequest> pRequest)
override;
78 std::optional<std::chrono::time_point<std::chrono::steady_clock>>
m_ShutdownTime;
Definition http_curl.h:51
void Run(std::shared_ptr< IHttpRequest > pRequest) override
Definition http_curl.cpp:331
std::optional< std::chrono::time_point< std::chrono::steady_clock > > m_ShutdownTime
Definition http_curl.h:78
std::deque< std::shared_ptr< CHttpRequestCurl > > m_PendingRequests
Definition http_curl.h:75
int m_NextTimeout
Definition http_curl.h:83
static void ThreadMain(void *pUser)
Definition http_curl.cpp:353
CURLM * m_pMultiH
Definition http_curl.h:82
std::mutex m_Lock
Definition http_curl.h:72
std::unordered_map< CURL *, std::shared_ptr< CHttpRequestCurl > > m_RunningRequests
Definition http_curl.h:76
EState
Definition http_curl.h:64
@ RUNNING
Definition http_curl.h:66
@ UNINITIALIZED
Definition http_curl.h:65
@ ERROR
Definition http_curl.h:67
~CHttpCurl() override
Definition http_curl.cpp:322
bool HasIpresolveBug() const override
Definition http_curl.cpp:346
void Shutdown() override
Definition http_curl.cpp:312
std::atomic< bool > m_Shutdown
Definition http_curl.h:79
std::chrono::milliseconds m_ShutdownDelay
Definition http_curl.h:77
void * m_pThread
Definition http_curl.h:70
void RunLoop()
Definition http_curl.cpp:358
std::condition_variable m_ConditionVariableInit
Definition http_curl.h:73
std::atomic< EState > m_State
Definition http_curl.h:74
bool Init(std::chrono::milliseconds ShutdownDelay) override
Definition http_curl.cpp:291
bool ConfigureHandle(CURL *pHandle)
Definition http_curl.cpp:64
void Header(const char *pNameColonValue) override
Definition http_curl.cpp:59
friend class CHttpCurl
Definition http_curl.h:21
bool m_ResponseHeadersEnded
Definition http_curl.h:34
curl_slist * m_pRequestHeaders
Definition http_curl.h:30
char m_aErr[CURL_ERROR_SIZE]
Definition http_curl.h:32
CHttpRequestCurl(const char *pUrl)
Definition http_curl.cpp:48
~CHttpRequestCurl() override
Definition http_curl.cpp:53
static size_t WriteCallback(char *pData, size_t Size, size_t Number, void *pUser)
Definition http_curl.cpp:261
static int ProgressCallback(void *pUser, double DlTotal, double DlCurr, double UlTotal, double UlCurr)
Definition http_curl.cpp:266
static size_t HeaderCallback(char *pData, size_t Size, size_t Number, void *pUser)
Definition http_curl.cpp:255
void OnCompletionInternal(CURL *pHandle, CURLcode Code)
Definition http_curl.cpp:225
size_t OnHeader(char *pHeader, size_t HeaderSize)
Definition http_curl.cpp:179
IHttpRequest(const char *pUrl)
Definition http.cpp:19
double Size() const
Definition http.h:88