MCPcopy Create free account
hub / github.com/NVIDIA/stdexec / transform_sender

Method transform_sender

include/exec/thread_pool_base.hpp:78–105  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

76 {
77 template <sender_for<STDEXEC::bulk_chunked_t> Sender, class Env>
78 static constexpr auto transform_sender(STDEXEC::set_value_t, Sender&& sndr, Env const & env)
79 {
80 auto& [tag, data, child] = sndr;
81 auto& [pol, shape, fun] = data;
82
83 if constexpr (STDEXEC::__completes_on<decltype(child), scheduler, Env>)
84 {
85 auto sch =
86 STDEXEC::get_completion_scheduler<STDEXEC::set_value_t>(STDEXEC::get_env(child), env);
87 using sender_t =
88 scheduler::template bulk_sender_t<decltype(child), decltype(shape), decltype(fun)>;
89 return sender_t{*sch.pool_,
90 STDEXEC::__forward_like<Sender>(child),
91 shape,
92 STDEXEC::__forward_like<Sender>(fun)};
93 }
94 else
95 {
96 return STDEXEC::__not_a_sender<
97 STDEXEC::_WHAT_(CANNOT_DISPATCH_BULK_ALGORITHM_TO_THE_POOL_SCHEDULER),
98 STDEXEC::_WHY_(BECAUSE_THERE_IS_NO_POOL_SCHEDULER_IN_THE_ENVIRONMENT),
99 STDEXEC::_WHERE_(STDEXEC::_IN_ALGORITHM_, STDEXEC::tag_of_t<Sender>),
100 STDEXEC::_TO_FIX_THIS_ERROR_(
101 ADD_A_CONTINUES_ON_TRANSITION_TO_THE_POOL_SCHEDULER_BEFORE_THE_BULK_ALGORITHM),
102 STDEXEC::_WITH_PRETTY_SENDER_<Sender>,
103 STDEXEC::_WITH_ENVIRONMENT_(Env)>();
104 }
105 }
106
107 template <sender_for<STDEXEC::bulk_unchunked_t> Sender, class Env>
108 static constexpr auto transform_sender(STDEXEC::set_value_t, Sender&& sndr, Env const & env);

Callers

nothing calls this directly

Calls 1

get_envFunction · 0.70

Tested by

no test coverage detected