curl-cpp
static c++17 wrapper for curl with -fno-exceptions support
Public Member Functions | List of all members
curl::Share< Shared_mutex_t > Class Template Reference

#include <curl_share.hpp>

Collaboration diagram for curl::Share< Shared_mutex_t >:
Collaboration graph

Public Member Functions

 Share (Share_base &&base) noexcept
 
void enable_multithreaded_share () noexcept
 
void disable_multithreaded_share () noexcept
 
 Share_base (curl_t::Share_t &&share) noexcept
 
 Share_base (const Share_base &)=delete
 
 Share_base (Share_base &&other) noexcept
 

Detailed Description

template<class Shared_mutex_t = utils::shared_mutex>
class curl::Share< Shared_mutex_t >

Template Parameters
Shared_mutex_tFor shared or single lock, their unlock function must be the same function – Shared_mutex_t::unlock().
If Shared_mutex_t lock, lock_shared or unlock throw an exception, it would terminte the program.
If Shared_mutex_t has type Ret_except_t (Ret == void), then Shared_mutex_t(Ret_except_t&) would be called.
Pass void to disable locking, which make multithreaded use unsafe.
Examples
curl_share.cc.

Definition at line 47 of file curl.hpp.

Constructor & Destructor Documentation

◆ Share()

template<class Shared_mutex_t = utils::shared_mutex>
curl::Share< Shared_mutex_t >::Share ( Share_base &&  base)
inlinenoexcept
Parameters
baseany usable Share_base object.

Definition at line 205 of file curl_share.hpp.

205  :
206  Share_base{std::move(base)}
207  {}

Member Function Documentation

◆ Share_base() [1/3]

template<class Shared_mutex_t = utils::shared_mutex>
curl::Share_base::Share_base
noexcept
Parameters
sharemust be != nullptr

After this ctor call, share.get() == nullptr, this class will take over the ownership.

Definition at line 15 of file curl_share.cc.

15  :
16  curl_share{std::move(share)}
17 {}

◆ Share_base() [2/3]

template<class Shared_mutex_t = utils::shared_mutex>
curl::Share_base::Share_base
delete

Since libcurl doesn't provide a dup function for curl_share, neither will Share_base.

◆ Share_base() [3/3]

template<class Shared_mutex_t = utils::shared_mutex>
curl::Share_base::Share_base
noexcept
Parameters
otherbool(other) can be false, but then this new instance of Share_base will be unusable.

Definition at line 19 of file curl_share.cc.

19  :
20  curl_share{std::move(other.curl_share)}
21 {}

The documentation for this class was generated from the following files:
curl::Share::Share_base
Share_base(curl_t::Share_t &&share) noexcept
Definition: curl_share.cc:15