include/boost/corosio/detail/op_base.hpp

100.0% Lines (33/0/33) 99.2% List of functions (123/0/124)
op_base.hpp
f(x) Functions (124)
Function Calls Lines Blocks
boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<boost::capy::detail::slice_of<boost::capy::mutable_buffer> > >::bytes_op_base() :39 34x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<boost::capy::detail::slice_of<std::array<boost::capy::mutable_buffer, 2ul> > > >::bytes_op_base() :39 1x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<boost::capy::mutable_buffer> >::bytes_op_base() :39 214305x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<std::array<boost::capy::mutable_buffer, 2ul> > >::bytes_op_base() :39 9x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<std::array<boost::capy::mutable_buffer, 3ul> > >::bytes_op_base() :39 4x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<std::span<boost::capy::mutable_buffer const, 18446744073709551615ul> > >::bytes_op_base() :39 2x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<boost::capy::const_buffer> >::bytes_op_base() :39 213566x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<boost::capy::detail::slice_of<boost::capy::const_buffer> > >::bytes_op_base() :39 35x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<boost::capy::detail::slice_of<boost::capy::detail::slice_of<std::array<boost::capy::const_buffer, 2ul> > > > >::bytes_op_base() :39 2x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<boost::capy::detail::slice_of<boost::capy::mutable_buffer> > >::bytes_op_base() :39 3x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<std::array<boost::capy::const_buffer, 2ul> > >::bytes_op_base() :39 7x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<std::array<boost::capy::const_buffer, 3ul> > >::bytes_op_base() :39 4x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<std::vector<boost::capy::const_buffer, std::allocator<boost::capy::const_buffer> > > >::bytes_op_base() :39 1x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::local_datagram_socket::recv_awaitable>::bytes_op_base() :39 97x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::local_datagram_socket::recv_from_awaitable>::bytes_op_base() :39 88x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::local_datagram_socket::send_awaitable>::bytes_op_base() :39 93x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::local_datagram_socket::send_to_awaitable>::bytes_op_base() :39 88x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::udp_socket::recv_awaitable>::bytes_op_base() :39 61x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::udp_socket::recv_from_awaitable>::bytes_op_base() :39 91x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::udp_socket::send_awaitable>::bytes_op_base() :39 26x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::udp_socket::send_to_awaitable>::bytes_op_base() :39 71x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<boost::capy::detail::slice_of<boost::capy::mutable_buffer> > >::await_ready() const :46 34x 100.0% 88.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<boost::capy::detail::slice_of<std::array<boost::capy::mutable_buffer, 2ul> > > >::await_ready() const :46 1x 100.0% 88.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<boost::capy::mutable_buffer> >::await_ready() const :46 214305x 100.0% 88.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<std::array<boost::capy::mutable_buffer, 2ul> > >::await_ready() const :46 9x 100.0% 88.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<std::array<boost::capy::mutable_buffer, 3ul> > >::await_ready() const :46 4x 100.0% 88.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<std::span<boost::capy::mutable_buffer const, 18446744073709551615ul> > >::await_ready() const :46 2x 100.0% 88.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<boost::capy::const_buffer> >::await_ready() const :46 213566x 100.0% 88.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<boost::capy::detail::slice_of<boost::capy::const_buffer> > >::await_ready() const :46 35x 100.0% 88.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<boost::capy::detail::slice_of<boost::capy::detail::slice_of<std::array<boost::capy::const_buffer, 2ul> > > > >::await_ready() const :46 2x 100.0% 88.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<boost::capy::detail::slice_of<boost::capy::mutable_buffer> > >::await_ready() const :46 3x 100.0% 88.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<std::array<boost::capy::const_buffer, 2ul> > >::await_ready() const :46 7x 100.0% 88.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<std::array<boost::capy::const_buffer, 3ul> > >::await_ready() const :46 4x 100.0% 88.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<std::vector<boost::capy::const_buffer, std::allocator<boost::capy::const_buffer> > > >::await_ready() const :46 1x 100.0% 88.0% boost::corosio::detail::bytes_op_base<boost::corosio::local_datagram_socket::recv_awaitable>::await_ready() const :46 97x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::local_datagram_socket::recv_from_awaitable>::await_ready() const :46 88x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::local_datagram_socket::send_awaitable>::await_ready() const :46 93x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::local_datagram_socket::send_to_awaitable>::await_ready() const :46 88x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::udp_socket::recv_awaitable>::await_ready() const :46 61x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::udp_socket::recv_from_awaitable>::await_ready() const :46 91x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::udp_socket::send_awaitable>::await_ready() const :46 26x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::udp_socket::send_to_awaitable>::await_ready() const :46 71x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<boost::capy::detail::slice_of<boost::capy::mutable_buffer> > >::await_resume() const :53 34x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<boost::capy::detail::slice_of<std::array<boost::capy::mutable_buffer, 2ul> > > >::await_resume() const :53 1x 75.0% 57.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<boost::capy::mutable_buffer> >::await_resume() const :53 214292x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<std::array<boost::capy::mutable_buffer, 2ul> > >::await_resume() const :53 9x 75.0% 57.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<std::array<boost::capy::mutable_buffer, 3ul> > >::await_resume() const :53 4x 75.0% 57.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<std::span<boost::capy::mutable_buffer const, 18446744073709551615ul> > >::await_resume() const :53 2x 75.0% 86.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<boost::capy::const_buffer> >::await_resume() const :53 213560x 100.0% 86.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<boost::capy::detail::slice_of<boost::capy::const_buffer> > >::await_resume() const :53 35x 75.0% 57.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<boost::capy::detail::slice_of<boost::capy::detail::slice_of<std::array<boost::capy::const_buffer, 2ul> > > > >::await_resume() const :53 2x 75.0% 57.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<boost::capy::detail::slice_of<boost::capy::mutable_buffer> > >::await_resume() const :53 3x 75.0% 57.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<std::array<boost::capy::const_buffer, 2ul> > >::await_resume() const :53 7x 75.0% 57.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<std::array<boost::capy::const_buffer, 3ul> > >::await_resume() const :53 4x 75.0% 57.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<std::vector<boost::capy::const_buffer, std::allocator<boost::capy::const_buffer> > > >::await_resume() const :53 1x 75.0% 57.0% boost::corosio::detail::bytes_op_base<boost::corosio::local_datagram_socket::recv_awaitable>::await_resume() const :53 95x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::local_datagram_socket::recv_from_awaitable>::await_resume() const :53 85x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::local_datagram_socket::send_awaitable>::await_resume() const :53 93x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::local_datagram_socket::send_to_awaitable>::await_resume() const :53 88x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::udp_socket::recv_awaitable>::await_resume() const :53 61x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::udp_socket::recv_from_awaitable>::await_resume() const :53 85x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::udp_socket::send_awaitable>::await_resume() const :53 26x 100.0% 86.0% boost::corosio::detail::bytes_op_base<boost::corosio::udp_socket::send_to_awaitable>::await_resume() const :53 68x 100.0% 86.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<boost::capy::detail::slice_of<boost::capy::mutable_buffer> > >::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 34x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<boost::capy::detail::slice_of<std::array<boost::capy::mutable_buffer, 2ul> > > >::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 1x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<boost::capy::mutable_buffer> >::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 214279x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<std::array<boost::capy::mutable_buffer, 2ul> > >::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 9x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<std::array<boost::capy::mutable_buffer, 3ul> > >::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 4x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_read_stream::read_some_awaitable<std::span<boost::capy::mutable_buffer const, 18446744073709551615ul> > >::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 2x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<boost::capy::const_buffer> >::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 213540x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<boost::capy::detail::slice_of<boost::capy::const_buffer> > >::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 35x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<boost::capy::detail::slice_of<boost::capy::detail::slice_of<std::array<boost::capy::const_buffer, 2ul> > > > >::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 2x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<boost::capy::detail::slice_of<boost::capy::mutable_buffer> > >::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 3x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<std::array<boost::capy::const_buffer, 2ul> > >::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 7x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<std::array<boost::capy::const_buffer, 3ul> > >::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 4x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::io_write_stream::write_some_awaitable<std::vector<boost::capy::const_buffer, std::allocator<boost::capy::const_buffer> > > >::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 1x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::local_datagram_socket::recv_awaitable>::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 93x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::local_datagram_socket::recv_from_awaitable>::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 84x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::local_datagram_socket::send_awaitable>::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 89x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::local_datagram_socket::send_to_awaitable>::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 84x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::udp_socket::recv_awaitable>::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 59x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::udp_socket::recv_from_awaitable>::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 87x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::udp_socket::send_awaitable>::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 24x 100.0% 100.0% boost::corosio::detail::bytes_op_base<boost::corosio::udp_socket::send_to_awaitable>::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :60 67x 100.0% 100.0% boost::corosio::detail::value_op_base<boost::corosio::resolver::resolve_awaitable, std::vector<boost::corosio::resolver_entry, std::allocator<boost::corosio::resolver_entry> > >::value_op_base() :85 30x 100.0% 100.0% boost::corosio::detail::value_op_base<boost::corosio::resolver::reverse_resolve_awaitable, boost::corosio::reverse_resolver_result>::value_op_base() :85 20x 100.0% 100.0% boost::corosio::detail::value_op_base<boost::corosio::resolver::resolve_awaitable, std::vector<boost::corosio::resolver_entry, std::allocator<boost::corosio::resolver_entry> > >::await_ready() const :92 30x 100.0% 88.0% boost::corosio::detail::value_op_base<boost::corosio::resolver::reverse_resolve_awaitable, boost::corosio::reverse_resolver_result>::await_ready() const :92 20x 100.0% 88.0% boost::corosio::detail::value_op_base<boost::corosio::resolver::resolve_awaitable, std::vector<boost::corosio::resolver_entry, std::allocator<boost::corosio::resolver_entry> > >::await_resume() const :99 29x 100.0% 100.0% boost::corosio::detail::value_op_base<boost::corosio::resolver::reverse_resolve_awaitable, boost::corosio::reverse_resolver_result>::await_resume() const :99 19x 100.0% 100.0% boost::corosio::detail::value_op_base<boost::corosio::resolver::resolve_awaitable, std::vector<boost::corosio::resolver_entry, std::allocator<boost::corosio::resolver_entry> > >::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :106 2x 100.0% 100.0% boost::corosio::detail::void_op_base<boost::corosio::local_datagram_socket::connect_awaitable>::void_op_base() :130 2x 100.0% 100.0% boost::corosio::detail::void_op_base<boost::corosio::local_datagram_socket::wait_awaitable>::void_op_base() :130 14x 100.0% 100.0% boost::corosio::detail::void_op_base<boost::corosio::local_stream_acceptor::wait_awaitable>::void_op_base() :130 8x 100.0% 100.0% boost::corosio::detail::void_op_base<boost::corosio::local_stream_socket::connect_awaitable>::void_op_base() :130 25x 100.0% 100.0% boost::corosio::detail::void_op_base<boost::corosio::local_stream_socket::wait_awaitable>::void_op_base() :130 16x 100.0% 100.0% boost::corosio::detail::void_op_base<boost::corosio::tcp_acceptor::wait_awaitable>::void_op_base() :130 28x 100.0% 100.0% boost::corosio::detail::void_op_base<boost::corosio::tcp_socket::connect_awaitable>::void_op_base() :130 4308x 100.0% 100.0% boost::corosio::detail::void_op_base<boost::corosio::tcp_socket::wait_awaitable>::void_op_base() :130 64x 100.0% 100.0% boost::corosio::detail::void_op_base<boost::corosio::udp_socket::connect_awaitable>::void_op_base() :130 40x 100.0% 100.0% boost::corosio::detail::void_op_base<boost::corosio::udp_socket::wait_awaitable>::void_op_base() :130 30x 100.0% 100.0% boost::corosio::detail::void_op_base<boost::corosio::local_datagram_socket::connect_awaitable>::await_ready() const :136 2x 100.0% 88.0% boost::corosio::detail::void_op_base<boost::corosio::local_datagram_socket::wait_awaitable>::await_ready() const :136 14x 100.0% 88.0% boost::corosio::detail::void_op_base<boost::corosio::local_stream_acceptor::wait_awaitable>::await_ready() const :136 8x 100.0% 100.0% boost::corosio::detail::void_op_base<boost::corosio::local_stream_socket::connect_awaitable>::await_ready() const :136 25x 100.0% 88.0% boost::corosio::detail::void_op_base<boost::corosio::local_stream_socket::wait_awaitable>::await_ready() const :136 16x 100.0% 88.0% boost::corosio::detail::void_op_base<boost::corosio::tcp_acceptor::wait_awaitable>::await_ready() const :136 28x 100.0% 100.0% boost::corosio::detail::void_op_base<boost::corosio::tcp_socket::connect_awaitable>::await_ready() const :136 4308x 100.0% 88.0% boost::corosio::detail::void_op_base<boost::corosio::tcp_socket::wait_awaitable>::await_ready() const :136 64x 100.0% 88.0% boost::corosio::detail::void_op_base<boost::corosio::udp_socket::connect_awaitable>::await_ready() const :136 40x 100.0% 88.0% boost::corosio::detail::void_op_base<boost::corosio::udp_socket::wait_awaitable>::await_ready() const :136 30x 100.0% 88.0% boost::corosio::detail::void_op_base<boost::corosio::local_datagram_socket::connect_awaitable>::await_resume() const :143 2x 75.0% 57.0% boost::corosio::detail::void_op_base<boost::corosio::local_datagram_socket::wait_awaitable>::await_resume() const :143 14x 100.0% 86.0% boost::corosio::detail::void_op_base<boost::corosio::local_stream_acceptor::wait_awaitable>::await_resume() const :143 8x 75.0% 57.0% boost::corosio::detail::void_op_base<boost::corosio::local_stream_socket::connect_awaitable>::await_resume() const :143 23x 100.0% 86.0% boost::corosio::detail::void_op_base<boost::corosio::local_stream_socket::wait_awaitable>::await_resume() const :143 13x 100.0% 86.0% boost::corosio::detail::void_op_base<boost::corosio::tcp_acceptor::wait_awaitable>::await_resume() const :143 25x 100.0% 100.0% boost::corosio::detail::void_op_base<boost::corosio::tcp_socket::connect_awaitable>::await_resume() const :143 4306x 100.0% 100.0% boost::corosio::detail::void_op_base<boost::corosio::tcp_socket::wait_awaitable>::await_resume() const :143 61x 100.0% 100.0% boost::corosio::detail::void_op_base<boost::corosio::udp_socket::connect_awaitable>::await_resume() const :143 40x 100.0% 100.0% boost::corosio::detail::void_op_base<boost::corosio::udp_socket::wait_awaitable>::await_resume() const :143 30x 100.0% 86.0% boost::corosio::detail::void_op_base<boost::corosio::local_stream_socket::connect_awaitable>::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :150 3x 100.0% 100.0% boost::corosio::detail::void_op_base<boost::corosio::tcp_socket::connect_awaitable>::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :150 4072x 100.0% 100.0% boost::corosio::detail::void_op_base<boost::corosio::udp_socket::connect_awaitable>::await_suspend(std::__n4861::coroutine_handle<void>, boost::capy::io_env const*) :150 0 0.0% 0.0%
Line TLA Hits Source Code
1 //
2 // Copyright (c) 2026 Michael Vandeberg
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/corosio
8 //
9
10 #ifndef BOOST_COROSIO_DETAIL_OP_BASE_HPP
11 #define BOOST_COROSIO_DETAIL_OP_BASE_HPP
12
13 #include <boost/capy/io_result.hpp>
14 #include <boost/capy/ex/executor_ref.hpp>
15 #include <boost/capy/ex/io_env.hpp>
16
17 #include <coroutine>
18 #include <cstddef>
19 #include <stop_token>
20 #include <system_error>
21
22 namespace boost::corosio::detail {
23
24 /* CRTP base for awaitables that return io_result<std::size_t>.
25
26 Derived classes must provide:
27
28 std::coroutine_handle<> dispatch(
29 std::coroutine_handle<> h,
30 capy::executor_ref ex) const;
31
32 which forwards to the backend implementation method, passing
33 token_, &ec_, and &bytes_ as the cancellation/output parameters.
34 */
35 template<class Derived>
36 class bytes_op_base
37 {
38 friend Derived;
39 428588x bytes_op_base() = default;
40
41 public:
42 std::stop_token token_;
43 mutable std::error_code ec_;
44 mutable std::size_t bytes_ = 0;
45
46 428588x bool await_ready() const noexcept
47 {
48 // A pre-set ec_ means the initiator failed before dispatch
49 // (e.g. a closed object); complete immediately with that error.
50 428588x return static_cast<bool>(ec_) || token_.stop_requested();
51 }
52
53 428555x [[nodiscard]] capy::io_result<std::size_t> await_resume() const noexcept
54 {
55 428555x if (token_.stop_requested())
56 237x return {make_error_code(std::errc::operation_canceled), 0};
57 428318x return {ec_, bytes_};
58 }
59
60 428572x auto await_suspend(std::coroutine_handle<> h, capy::io_env const* env)
61 -> std::coroutine_handle<>
62 {
63 428572x token_ = env->stop_token;
64 428572x return static_cast<Derived const*>(this)->dispatch(
65 428572x h, env->executor);
66 }
67 };
68
69 /* CRTP base for awaitables that return io_result<Value> for a
70 moved-out result object (e.g. the resolver's result lists).
71
72 Derived classes must provide:
73
74 std::coroutine_handle<> dispatch(
75 std::coroutine_handle<> h,
76 capy::executor_ref ex) const;
77
78 which forwards to the backend implementation method, passing
79 token_, &ec_, and &value_ as the cancellation/output parameters.
80 */
81 template<class Derived, class Value>
82 class value_op_base
83 {
84 friend Derived;
85 50x value_op_base() = default;
86
87 public:
88 std::stop_token token_;
89 mutable std::error_code ec_;
90 mutable Value value_{};
91
92 50x bool await_ready() const noexcept
93 {
94 // A pre-set ec_ means the initiator failed before dispatch;
95 // complete immediately with that error.
96 50x return static_cast<bool>(ec_) || token_.stop_requested();
97 }
98
99 48x [[nodiscard]] capy::io_result<Value> await_resume() const noexcept
100 {
101 48x if (token_.stop_requested())
102 2x return {make_error_code(std::errc::operation_canceled), {}};
103 46x return {ec_, std::move(value_)};
104 }
105
106 50x auto await_suspend(std::coroutine_handle<> h, capy::io_env const* env)
107 -> std::coroutine_handle<>
108 {
109 50x token_ = env->stop_token;
110 50x return static_cast<Derived const*>(this)->dispatch(
111 50x h, env->executor);
112 }
113 };
114
115 /* CRTP base for awaitables that return io_result<>.
116
117 Derived classes must provide:
118
119 std::coroutine_handle<> dispatch(
120 std::coroutine_handle<> h,
121 capy::executor_ref ex) const;
122
123 which forwards to the backend implementation method, passing
124 token_ and &ec_ as the cancellation/output parameters.
125 */
126 template<class Derived>
127 class void_op_base
128 {
129 friend Derived;
130 4535x void_op_base() = default;
131
132 public:
133 std::stop_token token_;
134 mutable std::error_code ec_;
135
136 4535x bool await_ready() const noexcept
137 {
138 // A pre-set ec_ means the initiator failed before dispatch
139 // (e.g. auto-open); complete immediately with that error.
140 4535x return static_cast<bool>(ec_) || token_.stop_requested();
141 }
142
143 4522x [[nodiscard]] capy::io_result<> await_resume() const noexcept
144 {
145 4522x if (token_.stop_requested())
146 32x return {make_error_code(std::errc::operation_canceled)};
147 4490x return {ec_};
148 }
149
150 4531x auto await_suspend(std::coroutine_handle<> h, capy::io_env const* env)
151 -> std::coroutine_handle<>
152 {
153 4531x token_ = env->stop_token;
154 4531x return static_cast<Derived const*>(this)->dispatch(
155 4531x h, env->executor);
156 }
157 };
158
159 } // namespace boost::corosio::detail
160
161 #endif // BOOST_COROSIO_DETAIL_OP_BASE_HPP
162