Add copy constructor for CURLWrapper.

The copy constructor does the same as the constructor. A new CURL handle is used
for the “copy”.
This commit is contained in:
tastytea 2020-03-20 13:40:59 +01:00
parent da1c2ba409
commit fc32e8ac0a
Signed by: tastytea
GPG Key ID: CFC39497F1B26E07
2 changed files with 31 additions and 5 deletions

View File

@ -70,8 +70,12 @@ public:
*/
CURLWrapper();
//! Copy constructor
CURLWrapper(const CURLWrapper &other) = delete;
/*!
* @brief Copy constructor. Does the same as the Constructor.
*
* @since 0.5.2
*/
CURLWrapper(const CURLWrapper &);
//! Move constructor
CURLWrapper(CURLWrapper &&other) noexcept = delete;
@ -253,6 +257,13 @@ private:
string _curl_buffer_body;
bool _stream_cancelled;
/*!
* @brief Initializes curl and sets up connection.
*
* @since 0.5.2
*/
void init();
/*!
* @brief libcurl write callback function.
*

View File

@ -41,9 +41,7 @@ using std::uint16_t;
// No one will ever need more than 65535 connections. 😉
static atomic<uint16_t> curlwrapper_instances{0};
CURLWrapper::CURLWrapper()
: _curl_buffer_error{}
, _stream_cancelled{false}
void CURLWrapper::init()
{
if (curlwrapper_instances == 0)
{
@ -55,6 +53,23 @@ CURLWrapper::CURLWrapper()
_connection = curl_easy_init();
setup_curl();
}
CURLWrapper::CURLWrapper()
: _connection{}
, _curl_buffer_error{}
, _stream_cancelled{false}
{
init();
}
CURLWrapper::CURLWrapper(const CURLWrapper &)
: _connection{}
, _curl_buffer_error{}
, _stream_cancelled{false}
{
init();
}
CURLWrapper::~CURLWrapper() noexcept
{
curl_easy_cleanup(_connection);