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();
41 [outcome = std::forward<OutcomeType>(outcome), fn = std::forward<FnType>(fn)](
auto yield)
mutable {
42 if constexpr (SomeStoppableOutcome<OutcomeType>) {
43 auto& stopSource = outcome.getStopSource();
44 std::invoke(std::forward<decltype(fn)>(fn), outcome, stopSource, stopSource[yield]);
46 std::invoke(std::forward<decltype(fn)>(fn), outcome);
54 template <
typename ContextType,
typename FnType>
56 post(ContextType& ctx, FnType&& fn)
58 util::spawn(ctx.getExecutor(), [fn = std::forward<FnType>(fn)](
auto)
mutable {
59 std::invoke(std::forward<decltype(fn)>(fn));
65 template <
typename ContextType, SomeOutcome OutcomeType,
typename FnType>
66 [[nodiscard]]
static auto
67 dispatch(ContextType& ctx, OutcomeType&& outcome, FnType&& fn)
69 auto op = outcome.getOperation();
72 ctx.getExecutor(), [outcome = std::forward<OutcomeType>(outcome), fn = std::forward<FnType>(fn)]()
mutable {
73 if constexpr (SomeStoppableOutcome<OutcomeType>) {
74 auto& stopSource = outcome.getStopSource();
75 std::invoke(std::forward<decltype(fn)>(fn), outcome, stopSource, stopSource.getToken());
77 std::invoke(std::forward<decltype(fn)>(fn), outcome);
85 template <
typename ContextType,
typename FnType>
87 post(ContextType& ctx, FnType&& fn)
89 boost::asio::post(ctx.getExecutor(), std::forward<FnType>(fn));
94 template <
typename ContextType, SomeOutcome OutcomeType,
typename FnType>
95 [[nodiscard]]
static auto
96 dispatch([[maybe_unused]] ContextType& ctx, OutcomeType outcome, FnType&& fn)
98 auto op = outcome.getOperation();
101 auto& stopSource = outcome.getStopSource();
102 std::invoke(std::forward<FnType>(fn), outcome, stopSource, stopSource.getToken());
104 std::invoke(std::forward<FnType>(fn), outcome);
110 template <
typename ContextType,
typename FnType>
112 post([[maybe_unused]] ContextType& ctx, FnType&& fn)
114 std::invoke(std::forward<FnType>(fn));
Definition Execution.hpp:64