32 #include <QNetworkReply> 50 reply->deleteLater ();
51 f (reply->readAll ());
59 template<
typename Err = Util::Vo
id>
64 promise.reportStarted ();
66 QObject::connect (reply,
67 &QNetworkReply::finished,
69 [promise, reply] ()
mutable 71 reply->deleteLater ();
72 Util::ReportFutureResult (promise, Result_t::Right (reply->readAll ()));
74 QObject::connect (reply,
75 Util::Overload<QNetworkReply::NetworkError> (&QNetworkReply::error),
77 [promise, reply] ()
mutable 79 reply->deleteLater ();
80 auto report = [&] (
const Err& val) { Util::ReportFutureResult (promise, Result_t::Left (val)); };
82 if constexpr (std::is_same_v<Err, QString>)
83 report (reply->errorString ());
84 else if constexpr (std::is_same_v<Err, Util::Void>)
87 static_assert (std::is_same_v<Err, struct Dummy>,
"Unsupported error type");
90 return promise.future ();
constexpr detail::ExprTree< detail::ExprType::LeafStaticPlaceholder, detail::MemberPtrs< Ptr > > f
void HandleNetworkReply(QObject *context, QNetworkReply *reply, F f)
auto HandleReply(QNetworkReply *reply, QObject *context)
Executes a given functor upon a signal (or a list of signals).