12 return Share_t{
static_cast<
char*>(
static_cast<
void*>(curl_share_init()))};
16 curl_share{std::move(share)}
20 curl_share{std::move(other.curl_share)}
24 curl_share = std::move(other.curl_share);
30 return bool(curl_share);
33 void Share_base::
add_lock(lock_function_t lock_func, unlock_function_t unlock_func,
void *userptr)
noexcept
35 curl_share_setopt(curl_share.get(), CURLSHOPT_LOCKFUNC, lock_func);
36 curl_share_setopt(curl_share.get(), CURLSHOPT_UNLOCKFUNC, unlock_func);
37 curl_share_setopt(curl_share.get(), CURLSHOPT_USERDATA, userptr);
42 auto code = curl_share_setopt(curl_share.get(), CURLSHOPT_SHARE,
static_cast<curl_lock_data>(option));
43 if (code == CURLSHE_NOMEM)
44 return {std::bad_alloc{}};
45 else if (code == CURLSHE_NOT_BUILT_IN)
52 curl_share_setopt(curl_share.get(), CURLSHOPT_UNSHARE,
static_cast<curl_lock_data>(option));
57 curl_easy_setopt(easy.curl_easy, CURLOPT_SHARE, curl_share.get());
61 curl_easy_setopt(easy.curl_easy, CURLOPT_SHARE, NULL);