14#include <QDBusPendingCallWatcher>
15#include <QDBusPendingReply>
21 template<
typename... Rets>
25 std::unique_ptr<QDBusPendingCallWatcher>
Watcher_;
34 return Reply_.isFinished ();
41 &QDBusPendingCallWatcher::finished,
45 template<
typename =
void>
48 template<
typename T>
requires (
sizeof... (Rets) == 0)
51 template<
typename T>
requires (
sizeof... (Rets) == 1)
54 template<
typename T>
requires (
sizeof... (Rets) > 1)
64 if constexpr (
sizeof... (Rets) == 0)
66 else if constexpr (
sizeof... (Rets) == 1)
67 return {
Reply_.value () };
69 return [&]<
size_t... Idxs> (std::index_sequence<Idxs...>) -> std::tuple<Rets...>
71 return {
Reply_.template argumentAt<Idxs> ()... };
72 } (std::make_index_sequence<
sizeof... (Rets)> {});
79 template<
typename... Rets>
88 template<
typename... Rets>
detail::DBusAwaiter< Rets... > Typed(const QDBusPendingCall &asyncCall)
A proper void type, akin to unit (or ()) type in functional languages.
bool await_ready() const noexcept
std::unique_ptr< QDBusPendingCallWatcher > Watcher_
QDBusPendingReply< Rets... > Reply_
DBusAwaiter(const QDBusPendingReply< Rets... > &reply)
void await_suspend(std::coroutine_handle<> handle) noexcept
Either< QDBusError, SuccessType_t > await_resume() const noexcept
SuccessType<>::Type SuccessType_t