include/boost/capy/detail/abandonable.hpp

100.0% Lines (10 / 10) 98.4% Functions (60 / 61)
abandonable.hpp
f(x) Functions (61)
Function Calls Lines Blocks
boost::capy::detail::abandonable<boost::capy::(anonymous namespace)::immediate_io_awaitable>::await_ready() :41 1x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::(anonymous namespace)::throwing_payload_awaitable>::await_ready() :41 1x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::async_event::wait_awaiter>::await_ready() :41 1x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::quitter<std::tuple<std::error_code, unsigned long> > >::await_ready() :41 6x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, int> > >::await_ready() :41 23x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, long long> > >::await_ready() :41 4x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::await_ready() :41 13x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::error_code> > >::await_ready() :41 1x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::vector<unsigned long, std::allocator<unsigned long> > > > >::await_ready() :41 1x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long, int> > >::await_ready() :41 1x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_ready() :41 146x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_ready() :41 121x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::when_all_io_result_test::park_io_awaitable>::await_ready() :41 2x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::when_any_io_result_test::park_io_awaitable>::await_ready() :41 2x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::(anonymous namespace)::immediate_io_awaitable>::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<unsigned long, unsigned long> >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<unsigned long, unsigned long> >::promise_type>, boost::capy::io_env const*) :47 0 0.0% 0.0% auto boost::capy::detail::abandonable<boost::capy::(anonymous namespace)::throwing_payload_awaitable>::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<boost::capy::(anonymous namespace)::throwing_move_payload> >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<boost::capy::(anonymous namespace)::throwing_move_payload> >::promise_type>, boost::capy::io_env const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::async_event::wait_awaiter>::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code>, std::tuple<std::error_code> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code>, std::tuple<std::error_code> > >::promise_type>, boost::capy::io_env const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::quitter<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long> > >::promise_type>, boost::capy::io_env const*) :47 2x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::quitter<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<unsigned long, unsigned long> >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<unsigned long, unsigned long> >::promise_type>, boost::capy::io_env const*) :47 4x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, int> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_homogeneous_state<int> >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_homogeneous_state<int> >::promise_type>, boost::capy::io_env const*) :47 3x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, int> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code, int> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code, int> > >::promise_type>, boost::capy::io_env const*) :47 10x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, int> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code, int>, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code, int>, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type>, boost::capy::io_env const*) :47 4x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, int> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code>, std::tuple<std::error_code, int> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code>, std::tuple<std::error_code, int> > >::promise_type>, boost::capy::io_env const*) :47 4x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, int> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type>, boost::capy::io_env const*) :47 2x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, long long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, long long>, std::tuple<std::error_code, long long>, std::tuple<std::error_code, long long>, std::tuple<std::error_code, long long> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, long long>, std::tuple<std::error_code, long long>, std::tuple<std::error_code, long long>, std::tuple<std::error_code, long long> > >::promise_type>, boost::capy::io_env const*) :47 4x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_homogeneous_state<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_homogeneous_state<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type>, boost::capy::io_env const*) :47 3x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code, int>, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code, int>, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type>, boost::capy::io_env const*) :47 2x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type>, boost::capy::io_env const*) :47 3x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type>, boost::capy::io_env const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type>, boost::capy::io_env const*) :47 2x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::tuple<> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::tuple<> > >::promise_type>, boost::capy::io_env const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type>, boost::capy::io_env const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<std::error_code> >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<std::error_code> >::promise_type>, boost::capy::io_env const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::vector<unsigned long, std::allocator<unsigned long> > > > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, std::vector<unsigned long, std::allocator<unsigned long> > >, std::tuple<std::error_code, unsigned long> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, std::vector<unsigned long, std::allocator<unsigned long> > >, std::tuple<std::error_code, unsigned long> > >::promise_type>, boost::capy::io_env const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long, int> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long, int> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long, int> > >::promise_type>, boost::capy::io_env const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_homogeneous_state<unsigned long> >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_homogeneous_state<unsigned long> >::promise_type>, boost::capy::io_env const*) :47 30x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, std::vector<unsigned long, std::allocator<unsigned long> > >, std::tuple<std::error_code, unsigned long> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, std::vector<unsigned long, std::allocator<unsigned long> > >, std::tuple<std::error_code, unsigned long> > >::promise_type>, boost::capy::io_env const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long> > >::promise_type>, boost::capy::io_env const*) :47 5x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type>, boost::capy::io_env const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long, int> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long, int> > >::promise_type>, boost::capy::io_env const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long> > >::promise_type>, boost::capy::io_env const*) :47 22x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long> > >::promise_type>, boost::capy::io_env const*) :47 6x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code> > >::promise_type>, boost::capy::io_env const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_homogeneous_state<unsigned long> >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_homogeneous_state<unsigned long> >::promise_type>, boost::capy::io_env const*) :47 53x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type>, boost::capy::io_env const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<unsigned long, unsigned long> >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<unsigned long, unsigned long> >::promise_type>, boost::capy::io_env const*) :47 23x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<unsigned long> >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<unsigned long> >::promise_type>, boost::capy::io_env const*) :47 2x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_homogeneous_state<std::tuple<> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_homogeneous_state<std::tuple<> > >::promise_type>, boost::capy::io_env const*) :47 10x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code>, std::tuple<std::error_code, int> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code>, std::tuple<std::error_code, int> > >::promise_type>, boost::capy::io_env const*) :47 2x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code> > >::promise_type>, boost::capy::io_env const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code>, std::tuple<std::error_code> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code>, std::tuple<std::error_code> > >::promise_type>, boost::capy::io_env const*) :47 79x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code>, std::tuple<std::error_code>, std::tuple<std::error_code> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code>, std::tuple<std::error_code>, std::tuple<std::error_code> > >::promise_type>, boost::capy::io_env const*) :47 3x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_homogeneous_state<std::tuple<> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_homogeneous_state<std::tuple<> > >::promise_type>, boost::capy::io_env const*) :47 10x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::tuple<> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::tuple<> > >::promise_type>, boost::capy::io_env const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<std::tuple<> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<std::tuple<> > >::promise_type>, boost::capy::io_env const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<std::tuple<>, std::tuple<> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<std::tuple<>, std::tuple<> > >::promise_type>, boost::capy::io_env const*) :47 14x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::when_all_io_result_test::park_io_awaitable>::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code>, std::tuple<std::error_code> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code>, std::tuple<std::error_code> > >::promise_type>, boost::capy::io_env const*) :47 2x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::when_any_io_result_test::park_io_awaitable>::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<std::tuple<>, std::tuple<> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_io_runner<boost::capy::detail::when_any_io_state<std::tuple<>, std::tuple<> > >::promise_type>, boost::capy::io_env const*) :47 2x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::quitter<std::tuple<std::error_code, unsigned long> > >::await_resume() :53 6x 80.0% 83.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, long long> > >::await_resume() :53 4x 80.0% 83.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_resume() :53 50x 80.0% 83.0%
Line TLA Hits Source Code
1 //
2 // Copyright (c) 2026 Steve Gerbino
3 //
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 //
7 // Official repository: https://github.com/cppalliance/capy
8 //
9
10 #ifndef BOOST_CAPY_DETAIL_ABANDONABLE_HPP
11 #define BOOST_CAPY_DETAIL_ABANDONABLE_HPP
12
13 #include <boost/capy/detail/config.hpp>
14 #include <boost/capy/ex/abandon.hpp>
15 #include <boost/capy/ex/io_env.hpp>
16
17 #include <optional>
18 #include <type_traits>
19 #include <utility>
20
21 namespace boost {
22 namespace capy {
23 namespace detail {
24
25 /** Await an awaitable on behalf of a segment owner.
26
27 An owner suspended here is resumed either when the awaitable
28 completes or to unwind its abandoned segment. In the second case the
29 awaitable never completed, so the result is empty (or `false` for an
30 awaitable with no result) and the owner must destroy the awaitable
31 without reading it.
32 */
33 template<class A>
34 struct abandonable
35 {
36 using result_type = decltype(std::declval<A&>().await_resume());
37
38 A& a_;
39 chain_owner* owner_ = nullptr;
40
41 323x bool await_ready()
42 {
43 323x return a_.await_ready();
44 }
45
46 template<class H>
47 322x auto await_suspend(H h, io_env const* env)
48 {
49 322x owner_ = env->owner;
50 322x return a_.await_suspend(h, env);
51 }
52
53 319x auto await_resume()
54 {
55 319x bool const unwinding = owner_ && owner_->abandoned();
56 if constexpr(std::is_void_v<result_type>)
57 {
58 if(unwinding)
59 return false;
60 a_.await_resume();
61 return true;
62 }
63 else
64 {
65 319x if(unwinding)
66 33x return std::optional<result_type>();
67 286x return std::optional<result_type>(a_.await_resume());
68 }
69 }
70 };
71
72 } // namespace detail
73 } // namespace capy
74 } // namespace boost
75
76 #endif
77