lib/curl/Request: move code to class CurlResponseHandlerAdapter

This commit is contained in:
Max Kellermann
2021-12-08 19:47:01 +01:00
committed by Max Kellermann
parent 5d08988dda
commit 252e9f736f
5 changed files with 287 additions and 163 deletions

View File

@@ -31,9 +31,9 @@
#define CURL_REQUEST_HXX
#include "Easy.hxx"
#include "Adapter.hxx"
#include <map>
#include <string>
#include <cstddef>
struct StringView;
class CurlGlobal;
@@ -48,22 +48,11 @@ class CurlResponseHandler;
class CurlRequest final {
CurlGlobal &global;
CurlResponseHandler &handler;
CurlResponseHandlerAdapter handler;
/** the curl handle */
CurlEasy easy;
enum class State {
HEADERS,
BODY,
CLOSED,
} state = State::HEADERS;
std::multimap<std::string, std::string> headers;
/** error message provided by libcurl */
char error_buffer[CURL_ERROR_SIZE];
bool registered = false;
public:
@@ -164,18 +153,6 @@ private:
void FinishHeaders();
void FinishBody();
std::size_t DataReceived(const void *ptr, std::size_t size) noexcept;
void HeaderFunction(StringView s) noexcept;
/** called by curl when new data is available */
static std::size_t _HeaderFunction(char *ptr, std::size_t size, std::size_t nmemb,
void *stream) noexcept;
/** called by curl when new data is available */
static std::size_t WriteFunction(char *ptr, std::size_t size, std::size_t nmemb,
void *stream) noexcept;
};
#endif