xref: /openbmc/sdbusplus/include/sdbusplus/async/stdexec/execution.hpp (revision 10d0b4b7d1498cfd5c3d37edea271a54d1984e41)
1 /*
2  * Copyright (c) 2025 NVIDIA Corporation
3  *
4  * Licensed under the Apache License Version 2.0 with LLVM Exceptions
5  * (the "License"); you may not use this file except in compliance with
6  * the License. You may obtain a copy of the License at
7  *
8  *   https://llvm.org/LICENSE.txt
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 #pragma once
17 
18 #include "__detail/__execution_fwd.hpp"
19 
20 // include these after __execution_fwd.hpp
21 #include "__detail/__as_awaitable.hpp"                    // IWYU pragma: export
22 #include "__detail/__basic_sender.hpp"                    // IWYU pragma: export
23 #include "__detail/__bulk.hpp"                            // IWYU pragma: export
24 #include "__detail/__completion_signatures.hpp"           // IWYU pragma: export
25 #include "__detail/__connect_awaitable.hpp"               // IWYU pragma: export
26 #include "__detail/__continues_on.hpp"                    // IWYU pragma: export
27 #include "__detail/__cpo.hpp"                             // IWYU pragma: export
28 #include "__detail/__debug.hpp"                           // IWYU pragma: export
29 #include "__detail/__domain.hpp"                          // IWYU pragma: export
30 #include "__detail/__ensure_started.hpp"                  // IWYU pragma: export
31 #include "__detail/__env.hpp"                             // IWYU pragma: export
32 #include "__detail/__execute.hpp"                         // IWYU pragma: export
33 #include "__detail/__execution_legacy.hpp"                // IWYU pragma: export
34 #include "__detail/__inline_scheduler.hpp"                // IWYU pragma: export
35 #include "__detail/__into_variant.hpp"                    // IWYU pragma: export
36 #include "__detail/__intrusive_ptr.hpp"                   // IWYU pragma: export
37 #include "__detail/__intrusive_slist.hpp"                 // IWYU pragma: export
38 #include "__detail/__just.hpp"                            // IWYU pragma: export
39 #include "__detail/__let.hpp"                             // IWYU pragma: export
40 #include "__detail/__meta.hpp"                            // IWYU pragma: export
41 #include "__detail/__on.hpp"                              // IWYU pragma: export
42 #include "__detail/__operation_states.hpp"                // IWYU pragma: export
43 #include "__detail/__read_env.hpp"                        // IWYU pragma: export
44 #include "__detail/__receivers.hpp"                       // IWYU pragma: export
45 #include "__detail/__receiver_adaptor.hpp"                // IWYU pragma: export
46 #include "__detail/__receiver_ref.hpp"                    // IWYU pragma: export
47 #include "__detail/__run_loop.hpp"                        // IWYU pragma: export
48 #include "__detail/__schedule_from.hpp"                   // IWYU pragma: export
49 #include "__detail/__schedulers.hpp"                      // IWYU pragma: export
50 #include "__detail/__senders.hpp"                         // IWYU pragma: export
51 #include "__detail/__sender_adaptor_closure.hpp"          // IWYU pragma: export
52 #include "__detail/__split.hpp"                           // IWYU pragma: export
53 #include "__detail/__start_detached.hpp"                  // IWYU pragma: export
54 #include "__detail/__starts_on.hpp"                       // IWYU pragma: export
55 #include "__detail/__stopped_as_error.hpp"                // IWYU pragma: export
56 #include "__detail/__stopped_as_optional.hpp"             // IWYU pragma: export
57 #include "__detail/__submit.hpp"                          // IWYU pragma: export
58 #include "__detail/__sync_wait.hpp"                       // IWYU pragma: export
59 #include "__detail/__then.hpp"                            // IWYU pragma: export
60 #include "__detail/__transfer_just.hpp"                   // IWYU pragma: export
61 #include "__detail/__transform_sender.hpp"                // IWYU pragma: export
62 #include "__detail/__transform_completion_signatures.hpp" // IWYU pragma: export
63 #include "__detail/__type_traits.hpp"                     // IWYU pragma: export
64 #include "__detail/__upon_error.hpp"                      // IWYU pragma: export
65 #include "__detail/__upon_stopped.hpp"                    // IWYU pragma: export
66 #include "__detail/__unstoppable.hpp"                     // IWYU pragma: export
67 #include "__detail/__utility.hpp"                         // IWYU pragma: export
68 #include "__detail/__when_all.hpp"                        // IWYU pragma: export
69 #include "__detail/__with_awaitable_senders.hpp"          // IWYU pragma: export
70 #include "__detail/__write_env.hpp"                       // IWYU pragma: export
71 
72 #include "functional.hpp" // IWYU pragma: export
73 #include "concepts.hpp"   // IWYU pragma: export
74 #include "coroutine.hpp"  // IWYU pragma: export
75 #include "stop_token.hpp" // IWYU pragma: export
76 
77 // For issuing a meaningful diagnostic for the erroneous `snd1 | snd2`.
78 template <stdexec::sender _Ignore, stdexec::sender _Sender>
79   requires stdexec::__ok<stdexec::__bad_pipe_sink_t<_Sender>>
80 auto operator|(_Ignore&&, _Sender&&) noexcept;
81