diff --git a/include/curl_wrapper.hpp b/include/curl_wrapper.hpp index 6eb9d93..ffe0876 100644 --- a/include/curl_wrapper.hpp +++ b/include/curl_wrapper.hpp @@ -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. * diff --git a/src/curl_wrapper.cpp b/src/curl_wrapper.cpp index 9341069..0d78e6d 100644 --- a/src/curl_wrapper.cpp +++ b/src/curl_wrapper.cpp @@ -41,9 +41,7 @@ using std::uint16_t; // No one will ever need more than 65535 connections. 😉 static atomic 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);