| 543 | using receiver_concept = STDEXEC::receiver_tag; |
| 544 | |
| 545 | constexpr void __dispatch_result_(std::unique_lock<std::mutex>& __guard) noexcept |
| 546 | { |
| 547 | auto& __state = *__state_; |
| 548 | auto __local_subscribers = std::move(__state.__subscribers_); |
| 549 | __state.__forward_scope_.reset(); |
| 550 | if (__state.__no_future_.get() != nullptr) |
| 551 | { |
| 552 | // nobody is waiting for the results |
| 553 | // delete this and return |
| 554 | __state.__step_from_to_(__guard, __future_step::__no_future, __future_step::__deleted); |
| 555 | __guard.unlock(); |
| 556 | __state.__no_future_.reset(); |
| 557 | return; |
| 558 | } |
| 559 | __guard.unlock(); |
| 560 | while (!__local_subscribers.empty()) |
| 561 | { |
| 562 | auto* __sub = __local_subscribers.pop_front(); |
| 563 | __sub->__complete(); |
| 564 | } |
| 565 | } |
| 566 | |
| 567 | template <class _Tag, class... _As> |
| 568 | constexpr void __save_completion(_Tag, _As&&... __as) noexcept |
nothing calls this directly
no test coverage detected