1#include <cpr/callback.h>
2#include <curl/curl.h>
3#include <functional>
4
5namespace cpr {
6
7void CancellationCallback::SetProgressCallback(ProgressCallback& u_cb) {
8 user_cb.emplace(args: std::reference_wrapper{u_cb});
9}
10bool CancellationCallback::operator()(cpr_pf_arg_t dltotal, cpr_pf_arg_t dlnow, cpr_pf_arg_t ultotal, cpr_pf_arg_t ulnow) const {
11 const bool cont_operation{!cancellation_state->load()};
12 return user_cb ? (cont_operation && (*user_cb)(dltotal, dlnow, ultotal, ulnow)) : cont_operation;
13}
14} // namespace cpr
15