20namespace network_manager
26 : mThreadPool (
std::make_unique<ThreadPool>(
29 std::thread::hardware_concurrency ()
50 std::shared_ptr<CurlResponse> response = std::make_shared<CurlResponse> (
54 std::vector<uint8_t> buffer;
56 if (data !=
nullptr &&
size != 0)
58 const uint8_t* start =
static_cast<const uint8_t*
>(data);
59 const uint8_t*
end =
static_cast<const uint8_t*
>(data) +
size;
61 buffer.insert (buffer.begin (), start,
end);
64 mThreadPool->enqueue ([response, dataBuffer = std::move (buffer)]() {
65 if (!dataBuffer.empty())
66 response->setPayload (dataBuffer.data (), dataBuffer.size ());
76 std::unique_ptr<MultipartData> form)
81 std::shared_ptr<CurlResponse> response =
82 std::make_shared<CurlResponse>(verb, request,
mHandleManager.get());
86 [response, rawForm = form.release()]()
mutable
88 if (rawForm != nullptr && !rawForm->IsEmpty())
89 response->setForm(std::unique_ptr<MultipartData>(rawForm));
Declare an implementation of IResponse using libcurl.
Declare an implementation of IResponseFactory using libcurl.
ResponsePtr performRequest(RequestVerb verb, const Request &request) override
std::unique_ptr< CurlHandleManager > mHandleManager
void terminate() override
void setProxy(const std::string &proxy) override
std::unique_ptr< ThreadPool > mThreadPool
auto end(const Ptr< Type, BaseDeleter > &p)
Enables range-for.
std::shared_ptr< IResponse > ResponsePtr
constexpr decltype(std::thread::hardware_concurrency()) MIN_CURL_THREADS