9#include "QXmppVisitHelper_p.h"
16namespace QXmpp::Private {
20QXmppTask<T> makeReadyTask(T &&value) {
co_return value; }
24template<
typename Result,
typename Input,
typename Converter>
27 if constexpr (std::is_void_v<Input>) {
28 source.then(context, [p = std::move(p), convert = std::move(convert)]()
mutable {
29 if constexpr (std::is_void_v<Result>) {
37 source.then(context, [p = std::move(p), convert = std::move(convert)](Input &&input)
mutable {
38 if constexpr (std::is_void_v<Result>) {
39 convert(std::move(input));
42 p.finish(convert(std::move(input)));
49template<
typename Result,
typename Input,
typename Converter>
54 if constexpr (std::is_void_v<Input>) {
55 source.then(context, [p = std::move(p), convert = std::move(convert)]()
mutable {
56 if constexpr (std::is_void_v<Result>) {
64 source.then(context, [p = std::move(p), convert = std::move(convert)](Input &&input)
mutable {
65 if constexpr (std::is_void_v<Result>) {
66 convert(std::move(input));
69 p.
finish(convert(std::move(input)));
77template<
typename IqType,
typename Converter>
78auto parseIq(std::variant<QDomElement, QXmppError> &&sendResult, Converter convert)
80 using Result = std::invoke_result_t<Converter, IqType &&>;
83 [convert = std::move(convert)](
const QDomElement &element) -> Result {
86 return convert(std::move(iq));
92 std::move(sendResult));
95template<
typename IqType>
96auto parseIq(std::variant<QDomElement, QXmppError> &&sendResult) -> std::variant<IqType, QXmppError>
98 return parseIq<IqType>(std::move(sendResult), [](IqType &&iq) {
99 return std::variant<IqType, QXmppError> { iq };
Create and update QXmppTask objects to communicate results of asynchronous operations.
Definition QXmppTask.h:81
QXmppTask< T > task()
Definition QXmppTask.h:167
void finish()
Definition QXmppTask.h:184
Definition QXmppTask.h:330
std::variant< T, QXmppError > Result
Definition QXmppGlobal.h:209
Definition QXmppError.h:17