33 template <
typename ContextType, SomeOutcome OutcomeType,
typename FnType>
34 [[nodiscard]]
static auto
35 dispatch(ContextType& ctx, OutcomeType&& outcome, FnType&& fn)
37 auto op = outcome.getOperation();
42 [outcome = std::forward<OutcomeType>(outcome),
43 fn = std::forward<FnType>(fn)](
auto yield)
mutable {
44 if constexpr (SomeStoppableOutcome<OutcomeType>) {
45 auto& stopSource = outcome.getStopSource();
47 std::forward<decltype(fn)>(fn), outcome, stopSource, stopSource[yield]
50 std::invoke(std::forward<decltype(fn)>(fn), outcome);
57 [outcome = std::forward<OutcomeType>(outcome),
58 fn = std::forward<FnType>(fn)]()
mutable {
59 std::invoke(std::forward<decltype(fn)>(fn), outcome);
67 template <
typename ContextType,
typename FnType>
69 post(ContextType& ctx, FnType&& fn)
71 boost::asio::post(ctx.getExecutor(), [fn = std::forward<FnType>(fn)]()
mutable {
72 std::invoke(std::forward<decltype(fn)>(fn));
78 template <
typename ContextType, SomeOutcome OutcomeType,
typename FnType>
79 [[nodiscard]]
static auto
80 dispatch(ContextType& ctx, OutcomeType&& outcome, FnType&& fn)
82 auto op = outcome.getOperation();
86 [outcome = std::forward<OutcomeType>(outcome),
87 fn = std::forward<FnType>(fn)]()
mutable {
88 if constexpr (SomeStoppableOutcome<OutcomeType>) {
89 auto& stopSource = outcome.getStopSource();
91 std::forward<decltype(fn)>(fn), outcome, stopSource, stopSource.getToken()
94 std::invoke(std::forward<decltype(fn)>(fn), outcome);
102 template <
typename ContextType,
typename FnType>
104 post(ContextType& ctx, FnType&& fn)
106 boost::asio::post(ctx.getExecutor(), std::forward<FnType>(fn));
111 template <
typename ContextType, SomeOutcome OutcomeType,
typename FnType>
112 [[nodiscard]]
static auto
113 dispatch([[maybe_unused]] ContextType& ctx, OutcomeType outcome, FnType&& fn)
115 auto op = outcome.getOperation();
118 auto& stopSource = outcome.getStopSource();
119 std::invoke(std::forward<FnType>(fn), outcome, stopSource, stopSource.getToken());
121 std::invoke(std::forward<FnType>(fn), outcome);
127 template <
typename ContextType,
typename FnType>
129 post([[maybe_unused]] ContextType& ctx, FnType&& fn)
131 std::invoke(std::forward<FnType>(fn));
Definition Execution.hpp:77