Iros
 
Loading...
Searching...
No Matches
just_void_or_stopped.h
Go to the documentation of this file.
1#pragma once
2
8
9namespace di::execution {
11 template<typename Rec>
14 public:
15 explicit Type(bool should_stop_, Rec receiver_)
16 : should_stop(should_stop_), receiver(util::move(receiver_)) {}
17
19 [[no_unique_address]] Rec receiver;
20
21 private:
22 constexpr friend void tag_invoke(types::Tag<execution::start>, Type& self) {
23 if (self.should_stop) {
24 execution::set_stopped(util::move(self.receiver));
25 } else {
26 execution::set_value(util::move(self.receiver));
27 }
28 }
29 };
30 };
31
32 template<concepts::Receiver Rec>
34
35 struct SenderT {
36 struct Type {
37 public:
38 using is_sender = void;
39
41
43
44 private:
45 template<concepts::ReceiverOf<CompletionSignatures> Rec>
46 constexpr friend auto tag_invoke(types::Tag<execution::connect>, Type self, Rec receiver) {
47 return OperationState<Rec> { self.should_stop, util::move(receiver) };
48 }
49 };
50 };
51
53
54 struct Function {
55 auto operator()(bool should_stop) const -> concepts::Sender auto { return Sender { should_stop }; }
56 };
57}
58
60}
Definition sender.h:11
Definition just_void_or_stopped.h:10
meta::Type< OperationStateT< Rec > > OperationState
Definition just_void_or_stopped.h:33
meta::Type< SenderT > Sender
Definition just_void_or_stopped.h:52
Definition bulk.h:30
constexpr auto just_void_or_stopped
Definition just_void_or_stopped.h:59
constexpr auto set_stopped
Definition set_stopped.h:14
constexpr auto set_value
Definition set_value.h:14
T::Type Type
Definition core.h:26
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
Definition vocab.h:96
Definition set_stopped.h:6
Definition set_value.h:6
Definition just_void_or_stopped.h:54
auto operator()(bool should_stop) const -> concepts::Sender auto
Definition just_void_or_stopped.h:55
Type(bool should_stop_, Rec receiver_)
Definition just_void_or_stopped.h:15
bool should_stop
Definition just_void_or_stopped.h:18
constexpr friend void tag_invoke(types::Tag< execution::start >, Type &self)
Definition just_void_or_stopped.h:22
Rec receiver
Definition just_void_or_stopped.h:19
Definition just_void_or_stopped.h:36
bool should_stop
Definition just_void_or_stopped.h:42
types::CompletionSignatures< SetValue(), SetStopped()> CompletionSignatures
Definition just_void_or_stopped.h:40
constexpr friend auto tag_invoke(types::Tag< execution::connect >, Type self, Rec receiver)
Definition just_void_or_stopped.h:46
void is_sender
Definition just_void_or_stopped.h:38
Definition just_void_or_stopped.h:35
Definition completion_signuatures.h:7
Definition immovable.h:4