include/boost/corosio/native/detail/reactor/reactor_op.hpp

97.6% Lines (243 / 249, 4 excl) 23.2% Branches (171 / 736) 92.8% Functions (282 / 304, 8 excl)
reactor_op.hpp
f(x) Functions (312)
Function Calls Lines Branches Blocks
boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>::~reactor_op() :50 355x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor>::~reactor_op() :50 1000x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor>::~reactor_op() :50 1250x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor>::~reactor_op() :50 32104x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor>::~reactor_op() :50 1336x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>::~reactor_op() :50 345x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor>::~reactor_op() :50 968x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor>::~reactor_op() :50 1206x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor>::~reactor_op() :50 15018x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor>::~reactor_op() :50 1304x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>::reactor_op() :66 355x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor>::reactor_op() :66 1000x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor>::reactor_op() :66 1250x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor>::reactor_op() :66 32106x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor>::reactor_op() :66 1336x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>::reactor_op() :66 345x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor>::reactor_op() :66 968x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor>::reactor_op() :66 1206x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor>::reactor_op() :66 15017x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor>::reactor_op() :66 1304x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>::reset() :69 89x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor>::reset() :69 70x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor>::reset() :69 625x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor>::reset() :69 832404x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor>::reset() :69 149x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>::reset() :69 87x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor>::reset() :69 64x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor>::reset() :69 618x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor>::reset() :69 583026x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor>::reset() :69 148x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>::is_read_operation() const :81 7x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor>::is_read_operation() const :81 23x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor>::is_read_operation() const :81 273x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor>::is_read_operation() const :81 85689x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor>::is_read_operation() const :81 36x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>::is_read_operation() const :81 7x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor>::is_read_operation() const :81 21x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor>::is_read_operation() const :81 270x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor>::is_read_operation() const :81 52624x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor>::is_read_operation() const :81 33x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>::on_cancel() :91 3x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor>::on_cancel() :91 4x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor>::on_cancel() :91 4x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor>::on_cancel() :91 1513x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor>::on_cancel() :91 5x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>::on_cancel() :91 3x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor>::on_cancel() :91 4x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor>::on_cancel() :91 4x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor>::on_cancel() :91 496x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor>::on_cancel() :91 5x 0.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>::destroy() :97 7x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor>::destroy() :97 2x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor>::destroy() :97 7x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor>::destroy() :97 628x 0.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor>::destroy() :97 4x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>::destroy() :97 7x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor>::destroy() :97 2x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor>::destroy() :97 7x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor>::destroy() :97 624x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor>::destroy() :97 4x 0.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>::start(std::__1::stop_token const&, boost::corosio::detail::kqueue_descriptor*) :103 85x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor>::start(std::__1::stop_token const&, boost::corosio::detail::kqueue_local_datagram_socket*) :103 51x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor>::start(std::__1::stop_token const&, boost::corosio::detail::kqueue_local_stream_socket*) :103 580x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor>::start(std::__1::stop_token const&, boost::corosio::detail::kqueue_tcp_socket*) :103 212351x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor>::start(std::__1::stop_token const&, boost::corosio::detail::kqueue_udp_socket*) :103 116x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>::start(std::__1::stop_token const&, boost::corosio::detail::select_descriptor*) :103 83x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor>::start(std::__1::stop_token const&, boost::corosio::detail::select_local_datagram_socket*) :103 47x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor>::start(std::__1::stop_token const&, boost::corosio::detail::select_local_stream_socket*) :103 576x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor>::start(std::__1::stop_token const&, boost::corosio::detail::select_tcp_socket*) :103 139382x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor>::start(std::__1::stop_token const&, boost::corosio::detail::select_udp_socket*) :103 114x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor>::start(std::__1::stop_token const&, boost::corosio::detail::kqueue_local_stream_acceptor*) :111 28x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor>::start(std::__1::stop_token const&, boost::corosio::detail::kqueue_tcp_acceptor*) :111 8718x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor>::start(std::__1::stop_token const&, boost::corosio::detail::select_local_stream_acceptor*) :111 27x 100.0% – 100.0% boost::corosio::detail::reactor_op<boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor>::start(std::__1::stop_token const&, boost::corosio::detail::select_tcp_acceptor*) :111 6624x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::reactor_connect_op() :128 125x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::~reactor_connect_op() :128 125x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::reactor_connect_op() :128 167x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::~reactor_connect_op() :128 167x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::reactor_connect_op() :128 121x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::~reactor_connect_op() :128 121x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::reactor_connect_op() :128 163x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::~reactor_connect_op() :128 163x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::reactor_connect_op() :128 169x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::~reactor_connect_op() :128 169x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::reactor_connect_op() :128 4522x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::~reactor_connect_op() :128 4521x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::reactor_connect_op() :128 163x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::~reactor_connect_op() :128 163x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::reactor_connect_op() :128 1987x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::~reactor_connect_op() :128 1987x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::reset() :134 4x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::reset() :134 19x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::reset() :134 4x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::reset() :134 19x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::reset() :134 18x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::reset() :134 12379x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::reset() :134 17x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::reset() :134 2211x 100.0% – 100.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::perform_io() :140 0 100.0% – 0.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::perform_io() :140 0 100.0% – 0.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::perform_io() :140 0 0.0% 0.0% 0.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::perform_io() :140 0 0.0% 0.0% 0.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::perform_io() :140 0 100.0% – 0.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::perform_io() :140 12299x 71.4% 23.1% 88.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::perform_io() :140 0 0.0% 0.0% 0.0% boost::corosio::detail::reactor_connect_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::perform_io() :140 2197x 90.5% 65.4% 88.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>>::reactor_wait_op() :192 213x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>>::~reactor_wait_op() :192 213x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>>::reactor_wait_op() :192 207x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>>::~reactor_wait_op() :192 207x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>>::reactor_wait_op() :192 375x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>>::~reactor_wait_op() :192 375x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::reactor_wait_op() :192 501x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::~reactor_wait_op() :192 501x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>>::reactor_wait_op() :192 363x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>>::~reactor_wait_op() :192 363x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::reactor_wait_op() :192 489x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::~reactor_wait_op() :192 489x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>>::reactor_wait_op() :192 684x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>>::~reactor_wait_op() :192 684x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::reactor_wait_op() :192 17297x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::~reactor_wait_op() :192 17296x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>>::reactor_wait_op() :192 660x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>>::~reactor_wait_op() :192 660x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::reactor_wait_op() :192 8283x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::~reactor_wait_op() :192 8283x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>>::reset() :197 18x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>>::reset() :197 17x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>>::reset() :197 7x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::reset() :197 13x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>>::reset() :197 7x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::reset() :197 13x 0.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>>::reset() :197 14x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::reset() :197 55x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>>::reset() :197 14x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::reset() :197 49x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>>::is_read_operation() const :203 0 100.0% – 0.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>>::is_read_operation() const :203 0 0.0% – 0.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>>::is_read_operation() const :203 0 100.0% – 0.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::is_read_operation() const :203 0 100.0% – 0.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>>::is_read_operation() const :203 0 0.0% – 0.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::is_read_operation() const :203 0 0.0% – 0.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>>::is_read_operation() const :203 0 100.0% – 0.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::is_read_operation() const :203 0 0.0% – 0.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>>::is_read_operation() const :203 0 0.0% – 0.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::is_read_operation() const :203 0 0.0% – 0.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>>::probe(int, unsigned int, int&) :223 25x 100.0% – 55.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>>::probe(int, unsigned int, int&) :223 24x 85.0% 33.3% 55.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>>::probe(int, unsigned int, int&) :223 12x 100.0% – 59.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::probe(int, unsigned int, int&) :223 25x 100.0% – 59.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>>::probe(int, unsigned int, int&) :223 12x 90.0% 11.2% 59.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::probe(int, unsigned int, int&) :223 25x 0.0% 0.0% 59.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>>::probe(int, unsigned int, int&) :223 24x 100.0% – 59.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::probe(int, unsigned int, int&) :223 108x 65.0% 20.8% 88.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>>::probe(int, unsigned int, int&) :223 24x 90.0% 37.5% 59.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::probe(int, unsigned int, int&) :223 94x 100.0% 70.8% 88.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>>::perform_io() :261 0 100.0% – 0.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>>::perform_io() :261 0 0.0% 0.0% 0.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>>::perform_io() :261 5x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::perform_io() :261 11x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>>::perform_io() :261 5x 100.0% 30.0% 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::perform_io() :261 11x 0.0% 0.0% 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>>::perform_io() :261 8x 100.0% – 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::perform_io() :261 34x 100.0% 100.0% 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>>::perform_io() :261 8x 100.0% 100.0% 100.0% boost::corosio::detail::reactor_wait_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::perform_io() :261 35x 100.0% 100.0% 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>>::reactor_read_op() :278 71x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>>::~reactor_read_op() :278 71x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>>::reactor_read_op() :278 69x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>>::~reactor_read_op() :278 69x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>>::reactor_read_op() :278 169x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>>::~reactor_read_op() :278 169x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::reactor_read_op() :278 4522x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::~reactor_read_op() :278 4522x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>>::reactor_read_op() :278 163x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>>::~reactor_read_op() :278 163x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::reactor_read_op() :278 1987x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::~reactor_read_op() :278 1987x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>>::is_read_operation() const :293 57x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>>::is_read_operation() const :293 56x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>>::is_read_operation() const :293 276x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::is_read_operation() const :293 114035x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>>::is_read_operation() const :293 276x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::is_read_operation() const :293 84300x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>>::reset() :298 61x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>>::reset() :298 60x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>>::reset() :298 288x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::reset() :298 354998x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>>::reset() :298 287x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::reset() :298 286815x 100.0% – 100.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>>::perform_io() :305 8x 100.0% – 61.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>>::perform_io() :305 8x 88.9% 10.0% 61.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>>::perform_io() :305 1x 100.0% – 61.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::perform_io() :305 3x 88.9% 30.0% 84.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>>::perform_io() :305 1x 88.9% 30.0% 61.0% boost::corosio::detail::reactor_read_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::perform_io() :305 2x 100.0% 70.0% 84.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>, boost::corosio::detail::descriptor_write_policy>::reactor_write_op() :330 71x 100.0% – 100.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>, boost::corosio::detail::descriptor_write_policy>::~reactor_write_op() :330 71x 100.0% – 100.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>, boost::corosio::detail::descriptor_write_policy>::reactor_write_op() :330 69x 100.0% – 100.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>, boost::corosio::detail::descriptor_write_policy>::~reactor_write_op() :330 69x 100.0% – 100.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::detail::kqueue_traits::write_policy>::reactor_write_op() :330 169x 100.0% – 100.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::detail::kqueue_traits::write_policy>::~reactor_write_op() :330 169x 100.0% – 100.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::detail::kqueue_traits::write_policy>::reactor_write_op() :330 4522x 100.0% – 100.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::detail::kqueue_traits::write_policy>::~reactor_write_op() :330 4522x 100.0% – 100.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::detail::select_traits::write_policy>::reactor_write_op() :330 163x 100.0% – 100.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::detail::select_traits::write_policy>::~reactor_write_op() :330 163x 100.0% – 100.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::detail::select_traits::write_policy>::reactor_write_op() :330 1987x 100.0% – 100.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::detail::select_traits::write_policy>::~reactor_write_op() :330 1987x 100.0% – 100.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>, boost::corosio::detail::descriptor_write_policy>::reset() :344 10x 100.0% – 100.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>, boost::corosio::detail::descriptor_write_policy>::reset() :344 10x 100.0% – 100.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::detail::kqueue_traits::write_policy>::reset() :344 282x 100.0% – 100.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::detail::kqueue_traits::write_policy>::reset() :344 456272x 100.0% – 100.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::detail::select_traits::write_policy>::reset() :344 278x 100.0% – 100.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::detail::select_traits::write_policy>::reset() :344 287344x 100.0% – 100.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor, boost::corosio::detail::kqueue_tcp_acceptor>, boost::corosio::detail::descriptor_write_policy>::perform_io() :350 1x 100.0% – 66.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_descriptor_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor, boost::corosio::detail::select_tcp_acceptor>, boost::corosio::detail::descriptor_write_policy>::perform_io() :350 1x 83.3% 16.7% 66.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::detail::kqueue_traits::write_policy>::perform_io() :350 256x 100.0% – 50.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::detail::kqueue_traits::write_policy>::perform_io() :350 255x 0.0% 0.0% 66.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::detail::select_traits::write_policy>::perform_io() :350 255x 83.3% 25.0% 50.0% boost::corosio::detail::reactor_write_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::detail::select_traits::write_policy>::perform_io() :350 256x 100.0% 75.0% 83.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::detail::kqueue_traits::accept_policy>::reactor_accept_op() :369 59x 100.0% – 100.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::detail::kqueue_traits::accept_policy>::~reactor_accept_op() :369 59x 100.0% – 100.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::detail::kqueue_traits::accept_policy>::reactor_accept_op() :369 1244x 100.0% – 100.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::detail::kqueue_traits::accept_policy>::~reactor_accept_op() :369 1244x 100.0% – 100.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::detail::select_traits::accept_policy>::reactor_accept_op() :369 57x 100.0% – 100.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::detail::select_traits::accept_policy>::~reactor_accept_op() :369 57x 100.0% – 100.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::detail::select_traits::accept_policy>::reactor_accept_op() :369 774x 100.0% – 100.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::detail::select_traits::accept_policy>::~reactor_accept_op() :369 774x 100.0% – 100.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::detail::kqueue_traits::accept_policy>::reset() :386 23x 100.0% – 100.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::detail::kqueue_traits::accept_policy>::reset() :386 8702x 100.0% – 100.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::detail::select_traits::accept_policy>::reset() :386 22x 100.0% – 100.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::detail::select_traits::accept_policy>::reset() :386 6609x 100.0% – 100.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::detail::kqueue_traits::accept_policy>::destroy() :397 1x 100.0% – 66.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::detail::kqueue_traits::accept_policy>::destroy() :397 410x 0.0% 0.0% 100.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::detail::select_traits::accept_policy>::destroy() :397 1x 57.1% 25.0% 66.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::detail::select_traits::accept_policy>::destroy() :397 408x 100.0% 100.0% 100.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::detail::kqueue_traits::accept_policy>::perform_io() :407 17x 100.0% – 66.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::detail::kqueue_traits::accept_policy>::perform_io() :407 6844x 88.9% 25.0% 83.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>, boost::corosio::detail::select_traits::accept_policy>::perform_io() :407 16x 100.0% 25.0% 50.0% boost::corosio::detail::reactor_accept_op<boost::corosio::detail::reactor_stream_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::detail::select_traits::accept_policy>::perform_io() :407 3370x 100.0% 75.0% 83.0% boost::corosio::detail::reactor_send_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>>::reactor_send_op() :430 125x 100.0% – 100.0% boost::corosio::detail::reactor_send_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>>::~reactor_send_op() :430 125x 100.0% – 100.0% boost::corosio::detail::reactor_send_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::reactor_send_op() :430 167x 100.0% – 100.0% boost::corosio::detail::reactor_send_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::~reactor_send_op() :430 167x 100.0% – 100.0% boost::corosio::detail::reactor_send_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>>::reactor_send_op() :430 121x 100.0% – 100.0% boost::corosio::detail::reactor_send_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>>::~reactor_send_op() :430 121x 100.0% – 100.0% boost::corosio::detail::reactor_send_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::reactor_send_op() :430 163x 100.0% – 100.0% boost::corosio::detail::reactor_send_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::~reactor_send_op() :430 163x 100.0% – 100.0% boost::corosio::detail::reactor_send_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>>::reset() :444 17x 100.0% – 100.0% boost::corosio::detail::reactor_send_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::reset() :444 14x 100.0% – 100.0% boost::corosio::detail::reactor_send_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>>::reset() :444 16x 100.0% – 100.0% boost::corosio::detail::reactor_send_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::reset() :444 14x 100.0% – 100.0% boost::corosio::detail::reactor_send_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>>::perform_io() :451 0 100.0% – 0.0% boost::corosio::detail::reactor_send_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::perform_io() :451 1x 100.0% – 84.0% boost::corosio::detail::reactor_send_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>>::perform_io() :451 0 0.0% 0.0% 0.0% boost::corosio::detail::reactor_send_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::perform_io() :451 1x 92.3% 50.0% 84.0% boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>>::reactor_recv_op() :486 125x 100.0% – 100.0% boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>>::~reactor_recv_op() :486 125x 100.0% – 100.0% boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::reactor_recv_op() :486 167x 100.0% – 100.0% boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::~reactor_recv_op() :486 167x 100.0% – 100.0% boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>>::reactor_recv_op() :486 121x 100.0% – 100.0% boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>>::~reactor_recv_op() :486 121x 100.0% – 100.0% boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::reactor_recv_op() :486 163x 100.0% – 100.0% boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::~reactor_recv_op() :486 163x 100.0% – 100.0% boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>>::is_read_operation() const :503 – – – – boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::is_read_operation() const :503 – – – – boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>>::is_read_operation() const :503 – – – – boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::is_read_operation() const :503 – – – – boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>>::reset() :509 17x 100.0% – 100.0% boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::reset() :509 12x 100.0% – 100.0% boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>>::reset() :509 16x 100.0% – 100.0% boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::reset() :509 17x 100.0% – 100.0% boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>>::perform_io() :516 2x 100.0% – 61.0% boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::perform_io() :516 4x 100.0% – 84.0% boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>>::perform_io() :516 2x 100.0% 32.5% 61.0% boost::corosio::detail::reactor_recv_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::perform_io() :516 4x 91.7% 50.0% 92.0% boost::corosio::detail::reactor_send_to_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>>::reactor_send_to_op() :543 125x 100.0% – 100.0% boost::corosio::detail::reactor_send_to_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>>::~reactor_send_to_op() :543 125x 100.0% – 100.0% boost::corosio::detail::reactor_send_to_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::reactor_send_to_op() :543 167x 100.0% – 100.0% boost::corosio::detail::reactor_send_to_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::~reactor_send_to_op() :543 167x 100.0% – 100.0% boost::corosio::detail::reactor_send_to_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>>::reactor_send_to_op() :543 121x 100.0% – 100.0% boost::corosio::detail::reactor_send_to_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>>::~reactor_send_to_op() :543 121x 100.0% – 100.0% boost::corosio::detail::reactor_send_to_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::reactor_send_to_op() :543 163x 100.0% – 100.0% boost::corosio::detail::reactor_send_to_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::~reactor_send_to_op() :543 163x 100.0% – 100.0% boost::corosio::detail::reactor_send_to_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>>::reset() :563 13x 100.0% – 100.0% boost::corosio::detail::reactor_send_to_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::reset() :563 41x 100.0% – 100.0% boost::corosio::detail::reactor_send_to_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>>::reset() :563 11x 100.0% – 100.0% boost::corosio::detail::reactor_send_to_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::reset() :563 38x 100.0% – 100.0% boost::corosio::detail::reactor_send_to_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>>::perform_io() :572 0 100.0% – 0.0% boost::corosio::detail::reactor_send_to_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>>::perform_io() :572 1x 100.0% – 84.0% boost::corosio::detail::reactor_send_to_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>>::perform_io() :572 0 0.0% 0.0% 0.0% boost::corosio::detail::reactor_send_to_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>>::perform_io() :572 1x 93.3% 50.0% 84.0% boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::reactor_recv_from_op() :608 125x 100.0% – 100.0% boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::~reactor_recv_from_op() :608 125x 100.0% – 100.0% boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::reactor_recv_from_op() :608 167x 100.0% – 100.0% boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::~reactor_recv_from_op() :608 167x 100.0% – 100.0% boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::reactor_recv_from_op() :608 121x 100.0% – 100.0% boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::~reactor_recv_from_op() :608 121x 100.0% – 100.0% boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::reactor_recv_from_op() :608 163x 100.0% – 100.0% boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::~reactor_recv_from_op() :608 163x 100.0% – 100.0% boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::is_read_operation() const :634 – – – – boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::is_read_operation() const :634 – – – – boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::is_read_operation() const :634 – – – – boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::is_read_operation() const :634 – – – – boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::reset() :640 12x 100.0% – 100.0% boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::reset() :640 50x 100.0% – 100.0% boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::reset() :640 10x 100.0% – 100.0% boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::reset() :640 47x 100.0% – 100.0% boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_datagram_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::perform_io() :650 3x 100.0% – 61.0% boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_udp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::perform_io() :650 19x 100.0% – 92.0% boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>, boost::corosio::local_endpoint>::perform_io() :650 2x 93.8% 22.5% 61.0% boost::corosio::detail::reactor_recv_from_op<boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>, boost::corosio::endpoint>::perform_io() :650 20x 100.0% 60.0% 84.0%
Line Branch 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/corosio
8 //
9
10 #ifndef BOOST_COROSIO_NATIVE_DETAIL_REACTOR_REACTOR_OP_HPP
11 #define BOOST_COROSIO_NATIVE_DETAIL_REACTOR_REACTOR_OP_HPP
12
13 #include <boost/corosio/native/detail/reactor/reactor_events.hpp>
14 #include <boost/corosio/native/detail/reactor/reactor_op_base.hpp>
15 #include <boost/corosio/io/io_object.hpp>
16 #include <boost/corosio/endpoint.hpp>
17 #include <boost/capy/ex/executor_ref.hpp>
18
19 #include <atomic>
20 #include <cstddef>
21 #include <optional>
22 #include <stop_token>
23
24 #include <errno.h>
25 #include <poll.h>
26
27 #include <netinet/in.h>
28 #include <sys/socket.h>
29 #include <sys/uio.h>
30 #include <unistd.h>
31
32 namespace boost::corosio::detail {
33
34 /** Base operation for reactor-based backends.
35
36 Holds per-operation state that depends on the concrete backend
37 socket/acceptor types: coroutine handle, executor, output
38 pointers, file descriptor, stop_callback, and type-specific
39 impl pointers.
40
41 Fields shared across all backends (errn, bytes_transferred,
42 cancelled, object_ref_, perform_io, complete) live in
43 reactor_op_base so the scheduler and descriptor_state can
44 access them without template instantiation.
45
46 @tparam Socket The backend socket impl type (forward-declared).
47 @tparam Acceptor The backend acceptor impl type (forward-declared).
48 */
49 template<class Socket, class Acceptor>
50 struct reactor_op : reactor_op_base
51 {
52 // The op envelope — coroutine handle h, cont, executor ex, ec_out,
53 // bytes_out, cancelled, stop_cb (+ its canceller), object_ref_ — lives in
54 // coro_op (via reactor_op_base) and is shared with io_uring/IOCP.
55 // reactor_op adds only the reactor-specific routing state below.
56
57 /// File descriptor this operation targets.
58 54887x int fd = -1;
59
60 /// Owning socket impl (for stop_token cancellation routing).
61 54887x Socket* socket_impl_ = nullptr;
62
63 /// Owning acceptor impl (for stop_token cancellation routing).
64 54887x Acceptor* acceptor_impl_ = nullptr;
65
66 109774x reactor_op() = default;
67
68 /// Reset operation state for reuse.
69 1417280x void reset() noexcept
70 {
71 1417280x fd = -1;
72 1417280x errn = 0;
73 1417280x bytes_transferred = 0;
74 1417280x cancelled.store(false, std::memory_order_relaxed);
75 1417280x object_ref_.reset();
76 1417280x socket_impl_ = nullptr;
77 1417280x acceptor_impl_ = nullptr;
78 1417280x }
79
80 /// Return true if this is a read-direction operation.
81 138983x virtual bool is_read_operation() const noexcept
82 {
83 138983x return false;
84 }
85
86 /// Cancel this operation via the owning impl.
87 virtual void cancel() noexcept = 0;
88
89 /// coro_op cancellation hook (fired by the shared canceller when the
90 /// stop_token requests cancellation): route to the impl-specific cancel().
91 2041x void on_cancel() noexcept override
92 {
93 2041x cancel();
94 2041x }
95
96 /// Destroy without invoking.
97 1292x void destroy() override
98 {
99 1292x reactor_op_base::destroy();
100 1292x }
101
102 /// Arm the stop-token callback for a socket operation.
103 353385x void start(std::stop_token const& token, Socket* impl)
104 {
105 353385x socket_impl_ = impl;
106 353385x acceptor_impl_ = nullptr;
107 353385x coro_op::start(token);
108 353385x }
109
110 /// Arm the stop-token callback for an acceptor operation.
111 15397x void start(std::stop_token const& token, Acceptor* impl)
112 {
113 15397x socket_impl_ = nullptr;
114 15397x acceptor_impl_ = impl;
115 15397x coro_op::start(token);
116 15397x }
117 };
118
119 /** Shared connect operation.
120
121 Checks SO_ERROR for connect completion status. The operator()()
122 and cancel() are provided by the concrete backend type.
123
124 @tparam Base The backend's base op type.
125 @tparam Endpoint The endpoint type (endpoint or local_endpoint).
126 */
127 template<class Base, class Endpoint = endpoint>
128 struct reactor_connect_op : Base
129 {
130 /// Endpoint to connect to.
131 Endpoint target_endpoint;
132
133 /// Reset operation state for reuse.
134 14671x void reset() noexcept
135 {
136 14671x Base::reset();
137 14671x target_endpoint = Endpoint{};
138 14671x }
139
140 14496x void perform_io() noexcept override
141 {
142 // A readiness notification does not prove the handshake
143 // finished: fresh sockets raise a spurious writable event,
144 // and a cached edge can trigger this check while the connect
145 // is still in flight — where SO_ERROR also reads 0. Probe
146 // writability first and report EAGAIN to stay parked;
147 // SO_ERROR decides only once the socket is actually writable.
148 14496x pollfd pfd{};
149 14496x pfd.fd = this->fd;
150 14496x pfd.events = POLLOUT;
151 int r;
152 14496x do
153 {
154
3/16
✓ Branch 0 taken 12298 times.
✓ Branch 1 taken 1 time.
✓ Branch 2 taken 2197 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
14497x r = ::poll(&pfd, 1, 0);
155 28990x }
156
6/32
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 12297 times.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✓ Branch 5 taken 2196 times.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
14495x while (r < 0 && errno == EINTR);
157
158
2/16
✗ Branch 0 not taken.
✓ Branch 1 taken 12298 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2197 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
14495x if (r == 0)
159 {
160 ✗ this->complete(EAGAIN, 0);
161 ✗ return;
162 }
163
4/16
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 12297 times.
✓ Branch 2 taken 1 time.
✓ Branch 3 taken 2196 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
14495x if (r < 0)
164 {
165 // EAGAIN must not escape: it is the stay-parked sentinel.
166 2x this->complete(
167
10/80
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 75 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✗ Branch 78 not taken.
✗ Branch 79 not taken.
2x (errno == EAGAIN || errno == EWOULDBLOCK) ? ENOMEM : errno, 0);
168 2x return;
169 }
170
171 14493x int err = 0;
172 14493x socklen_t len = sizeof(err);
173
7/32
✓ Branch 0 taken 12298 times.
✓ Branch 1 taken 1 time.
✓ Branch 2 taken 1 time.
✓ Branch 3 taken 12297 times.
✓ Branch 4 taken 2196 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 7 taken 2195 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
14493x if (::getsockopt(this->fd, SOL_SOCKET, SO_ERROR, &err, &len) < 0)
174
2/16
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
2x err = errno;
175 14494x this->complete(err, 0);
176 14496x }
177 };
178
179 /** Readiness-only wait operation.
180
181 Completion is decided by probing the descriptor with a
182 zero-timeout `poll()`, never by the reactor's cached edge
183 events: a speculative read can drain the socket without
184 touching the reactor (stale edge), and a short read can
185 consume the edge while data remains buffered (missing edge).
186 `perform_io()` runs the probe and reports `EAGAIN` when the
187 condition does not currently hold, which keeps the op parked.
188
189 @tparam Base The backend's base op type.
190 */
191 template<class Base>
192 29072x struct reactor_wait_op : Base
193 {
194 /// Which event bit this wait targets (reactor_event_read/write/error).
195 29072x std::uint32_t wait_event = 0;
196
197 207x void reset() noexcept
198 {
199 207x Base::reset();
200 207x wait_event = 0;
201 207x }
202
203 ✗ bool is_read_operation() const noexcept override
204 {
205 ✗ return wait_event == reactor_event_read;
206 }
207
208 /** Check whether the waited-for condition currently holds.
209
210 Zero-timeout `poll()` probe. `POLLERR`/`POLLHUP` count as
211 ready for every wait type: the wait must not park on a
212 socket whose next I/O would fail immediately. The probe is
213 side-effect free — in particular it never reads `SO_ERROR`,
214 which is consume-on-read and belongs to whichever operation
215 observes the failure next.
216
217 @param fd The descriptor to probe.
218 @param event The event bit to probe for (read/write/error).
219 @param err Receives the probe failure, if any.
220
221 @return `true` if the condition holds or the probe failed.
222 */
223 373x static bool probe(int fd, std::uint32_t event, int& err) noexcept
224 {
225 // poll() silently ignores negative fds; without this guard a
226 // wait on a never-opened or closed socket parks forever.
227
6/20
✓ Branch 0 taken 161 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 170 times.
✓ Branch 3 taken 9 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 24 times.
✓ Branch 13 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
373x if (fd < 0)
228 {
229 18x err = EBADF;
230 18x return true;
231 }
232
233 355x pollfd pfd{};
234 355x pfd.fd = fd;
235
6/20
✓ Branch 0 taken 104 times.
✓ Branch 1 taken 57 times.
✓ Branch 2 taken 109 times.
✓ Branch 3 taken 61 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 18 times.
✓ Branch 13 taken 6 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
355x if (event == reactor_event_read)
236 231x pfd.events = POLLIN;
237
6/20
✓ Branch 0 taken 31 times.
✓ Branch 1 taken 26 times.
✓ Branch 2 taken 31 times.
✓ Branch 3 taken 30 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✓ Branch 13 taken 4 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
124x else if (event == reactor_event_write)
238 64x pfd.events = POLLOUT;
239 else
240 60x pfd.events = POLLPRI;
241
242 int r;
243 355x do
244 {
245
3/20
✓ Branch 0 taken 161 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 170 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 24 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
355x r = ::poll(&pfd, 1, 0);
246 710x }
247
7/40
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 160 times.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✓ Branch 5 taken 169 times.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 24 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
355x while (r < 0 && errno == EINTR);
248
249
5/20
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 160 times.
✓ Branch 2 taken 1 time.
✓ Branch 3 taken 169 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 24 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
355x if (r < 0)
250 {
251 // Complete with the probe failure rather than park forever.
252 // EAGAIN must not escape here: callers treat it as the
253 // stay-parked sentinel, and poll() can fail with it on
254 // BSD/macOS under transient resource pressure.
255
10/100
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 75 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✗ Branch 78 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 81 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✗ Branch 84 not taken.
✗ Branch 85 not taken.
✗ Branch 86 not taken.
✗ Branch 87 not taken.
✗ Branch 88 not taken.
✗ Branch 89 not taken.
✗ Branch 90 not taken.
✗ Branch 91 not taken.
✗ Branch 92 not taken.
✗ Branch 93 not taken.
✗ Branch 94 not taken.
✗ Branch 95 not taken.
✗ Branch 96 not taken.
✗ Branch 97 not taken.
✗ Branch 98 not taken.
✗ Branch 99 not taken.
2x err = (errno == EAGAIN || errno == EWOULDBLOCK) ? ENOMEM : errno;
256 2x return true;
257 }
258 353x return r != 0;
259 373x }
260
261 117x void perform_io() noexcept override
262 {
263 117x int err = 0;
264
6/20
✓ Branch 0 taken 16 times.
✓ Branch 1 taken 31 times.
✓ Branch 2 taken 19 times.
✓ Branch 3 taken 40 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✓ Branch 13 taken 9 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
117x if (probe(this->fd, wait_event, err))
265 37x this->complete(err, 0);
266 else
267 80x this->complete(EAGAIN, 0);
268 117x }
269 };
270
271 /** Shared scatter-read operation.
272
273 Uses readv() with an EINTR retry loop.
274
275 @tparam Base The backend's base op type.
276 */
277 template<class Base>
278 6981x struct reactor_read_op : Base
279 {
280 /// Maximum scatter-gather buffer count.
281 static constexpr std::size_t max_buffers = 16;
282
283 /// Scatter-gather I/O vectors.
284 iovec iovecs[max_buffers];
285
286 /// Number of active I/O vectors.
287 6981x int iovec_count = 0;
288
289 /// True for zero-length reads (completed immediately).
290 6981x bool empty_buffer_read = false;
291
292 /// Return true (this is a read-direction operation).
293 199000x bool is_read_operation() const noexcept override
294 {
295 199000x return !empty_buffer_read;
296 }
297
298 642509x void reset() noexcept
299 {
300 642509x Base::reset();
301 642509x iovec_count = 0;
302 642509x empty_buffer_read = false;
303 642509x }
304
305 23x void perform_io() noexcept override
306 {
307 ssize_t n;
308 23x do
309 {
310
2/12
✓ Branch 0 taken 12 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 11 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
23x n = ::readv(this->fd, iovecs, iovec_count);
311 46x }
312
6/24
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 11 times.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✓ Branch 5 taken 10 times.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
23x while (n < 0 && errno == EINTR);
313
314
4/12
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 11 times.
✓ Branch 2 taken 1 time.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
23x if (n >= 0)
315 21x this->complete(0, static_cast<std::size_t>(n));
316 else
317
2/12
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
2x this->complete(errno, 0);
318 23x }
319 };
320
321 /** Shared gather-write operation.
322
323 Delegates the actual syscall to WritePolicy::write(fd, iovecs, count),
324 which returns ssize_t (bytes written or -1 with errno set).
325
326 @tparam Base The backend's base op type.
327 @tparam WritePolicy Provides `static ssize_t write(int, iovec*, int)`.
328 */
329 template<class Base, class WritePolicy>
330 6981x struct reactor_write_op : Base
331 {
332 /// The write syscall policy type.
333 using write_policy = WritePolicy;
334
335 /// Maximum scatter-gather buffer count.
336 static constexpr std::size_t max_buffers = 16;
337
338 /// Scatter-gather I/O vectors.
339 iovec iovecs[max_buffers];
340
341 /// Number of active I/O vectors.
342 6981x int iovec_count = 0;
343
344 744196x void reset() noexcept
345 {
346 744196x Base::reset();
347 744196x iovec_count = 0;
348 744196x }
349
350 1024x void perform_io() noexcept override
351 {
352 1024x ssize_t n = WritePolicy::write(this->fd, iovecs, iovec_count);
353
4/12
✓ Branch 0 taken 510 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 510 times.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
1024x if (n >= 0)
354 1020x this->complete(0, static_cast<std::size_t>(n));
355 else
356
2/12
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
4x this->complete(errno, 0);
357 1024x }
358 };
359
360 /** Shared accept operation.
361
362 Delegates the actual syscall to AcceptPolicy::do_accept(fd, peer_storage),
363 which returns the accepted fd or -1 with errno set.
364
365 @tparam Base The backend's base op type.
366 @tparam AcceptPolicy Provides `static int do_accept(int, sockaddr_storage&)`.
367 */
368 template<class Base, class AcceptPolicy>
369 2134x struct reactor_accept_op : Base
370 {
371 /// File descriptor of the accepted connection.
372 2134x int accepted_fd = -1;
373
374 /// Pointer to the peer socket implementation.
375 2134x io_object::implementation* peer_impl = nullptr;
376
377 /// Output pointer for the accepted implementation.
378 2134x io_object::implementation** impl_out = nullptr;
379
380 /// Peer address storage filled by accept.
381 2134x sockaddr_storage peer_storage{};
382
383 /// Peer address length returned by accept.
384 2134x socklen_t peer_addrlen = 0;
385
386 15356x void reset() noexcept
387 {
388 15356x Base::reset();
389 15356x accepted_fd = -1;
390 15356x peer_impl = nullptr;
391 15356x impl_out = nullptr;
392 15356x peer_storage = {};
393 15356x peer_addrlen = 0;
394 15356x }
395
396 /// Destroy without invoking, closing a connection already taken.
397 820x void destroy() override
398 {
399
4/8
✓ Branch 0 taken 408 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 407 times.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
820x if (accepted_fd >= 0)
400 {
401 5x ::close(accepted_fd);
402 5x accepted_fd = -1;
403 5x }
404 820x Base::destroy();
405 820x }
406
407 10247x void perform_io() noexcept override
408 {
409 10247x int new_fd =
410 10247x AcceptPolicy::do_accept(this->fd, peer_storage, peer_addrlen);
411
4/8
✓ Branch 0 taken 6382 times.
✓ Branch 1 taken 479 times.
✓ Branch 2 taken 2793 times.
✓ Branch 3 taken 593 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
10247x if (new_fd >= 0)
412 {
413 9175x accepted_fd = new_fd;
414 9175x this->complete(0, 0);
415 9175x }
416 else
417 {
418
2/8
✓ Branch 0 taken 479 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 593 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1072x this->complete(errno, 0);
419 }
420 10247x }
421 };
422
423 /** Shared connected send operation for datagram sockets.
424
425 Uses sendmsg() with msg_name=nullptr (connected mode).
426
427 @tparam Base The backend's base op type.
428 */
429 template<class Base>
430 576x struct reactor_send_op : Base
431 {
432 /// Maximum scatter-gather buffer count.
433 static constexpr std::size_t max_buffers = 16;
434
435 /// Scatter-gather I/O vectors.
436 iovec iovecs[max_buffers];
437
438 /// Number of active I/O vectors.
439 576x int iovec_count = 0;
440
441 /// User-supplied message flags.
442 576x int msg_flags = 0;
443
444 61x void reset() noexcept
445 {
446 61x Base::reset();
447 61x iovec_count = 0;
448 61x msg_flags = 0;
449 61x }
450
451 2x void perform_io() noexcept override
452 {
453 2x msghdr msg{};
454 2x msg.msg_iov = iovecs;
455 2x msg.msg_iovlen = static_cast<std::size_t>(iovec_count);
456
457 #ifdef MSG_NOSIGNAL
458 2x int send_flags = msg_flags | MSG_NOSIGNAL;
459 #else
460 int send_flags = msg_flags;
461 #endif
462
463 ssize_t n;
464 2x do
465 {
466
2/8
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
2x n = ::sendmsg(this->fd, &msg, send_flags);
467 4x }
468
4/16
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
2x while (n < 0 && errno == EINTR);
469
470
2/8
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
2x if (n >= 0)
471 ✗ this->complete(0, static_cast<std::size_t>(n));
472 else
473
2/8
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
2x this->complete(errno, 0);
474 2x }
475 };
476
477 /** Shared connected recv operation for datagram sockets.
478
479 Uses recvmsg() with msg_name=nullptr (connected mode).
480 Unlike reactor_read_op, does not map n==0 to EOF
481 (zero-length datagrams are valid).
482
483 @tparam Base The backend's base op type.
484 */
485 template<class Base>
486 576x struct reactor_recv_op : Base
487 {
488 /// Maximum scatter-gather buffer count.
489 static constexpr std::size_t max_buffers = 16;
490
491 /// Scatter-gather I/O vectors.
492 iovec iovecs[max_buffers];
493
494 /// Number of active I/O vectors.
495 576x int iovec_count = 0;
496
497 /// User-supplied message flags.
498 576x int msg_flags = 0;
499
500 /// Return true (this is a read-direction operation).
501 // LCOV_EXCL_START: devirtualized and inlined at the templated
502 // completion call site; the out-of-line body is never entered.
503 − bool is_read_operation() const noexcept override
504 {
505 − return true;
506 }
507 // LCOV_EXCL_STOP
508
509 62x void reset() noexcept
510 {
511 62x Base::reset();
512 62x iovec_count = 0;
513 62x msg_flags = 0;
514 62x }
515
516 12x void perform_io() noexcept override
517 {
518 12x msghdr msg{};
519 12x msg.msg_iov = iovecs;
520 12x msg.msg_iovlen = static_cast<std::size_t>(iovec_count);
521
522 ssize_t n;
523 12x do
524 {
525
3/8
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
12x n = ::recvmsg(this->fd, &msg, msg_flags);
526 24x }
527
9/16
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✓ Branch 9 taken 2 times.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
12x while (n < 0 && errno == EINTR);
528
529
6/8
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 1 time.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 1 time.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
12x if (n >= 0)
530 9x this->complete(0, static_cast<std::size_t>(n));
531 else
532
3/8
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
3x this->complete(errno, 0);
533 12x }
534 };
535
536 /** Shared send_to operation for datagram sockets.
537
538 Uses sendmsg() with the destination endpoint in msg_name.
539
540 @tparam Base The backend's base op type.
541 */
542 template<class Base>
543 576x struct reactor_send_to_op : Base
544 {
545 /// Maximum scatter-gather buffer count.
546 static constexpr std::size_t max_buffers = 16;
547
548 /// Scatter-gather I/O vectors.
549 iovec iovecs[max_buffers];
550
551 /// Number of active I/O vectors.
552 576x int iovec_count = 0;
553
554 /// Destination address storage.
555 576x sockaddr_storage dest_storage{};
556
557 /// Destination address length.
558 576x socklen_t dest_len = 0;
559
560 /// User-supplied message flags.
561 576x int msg_flags = 0;
562
563 103x void reset() noexcept
564 {
565 103x Base::reset();
566 103x iovec_count = 0;
567 103x dest_storage = {};
568 103x dest_len = 0;
569 103x msg_flags = 0;
570 103x }
571
572 2x void perform_io() noexcept override
573 {
574 2x msghdr msg{};
575 2x msg.msg_name = &dest_storage;
576 2x msg.msg_namelen = dest_len;
577 2x msg.msg_iov = iovecs;
578 2x msg.msg_iovlen = static_cast<std::size_t>(iovec_count);
579
580 #ifdef MSG_NOSIGNAL
581 2x int send_flags = msg_flags | MSG_NOSIGNAL;
582 #else
583 int send_flags = msg_flags;
584 #endif
585
586 ssize_t n;
587 2x do
588 {
589
2/8
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
2x n = ::sendmsg(this->fd, &msg, send_flags);
590 4x }
591
4/16
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
2x while (n < 0 && errno == EINTR);
592
593
2/8
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
2x if (n >= 0)
594 ✗ this->complete(0, static_cast<std::size_t>(n));
595 else
596
2/8
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
2x this->complete(errno, 0);
597 2x }
598 };
599
600 /** Shared recv_from operation for datagram sockets.
601
602 Uses recvmsg() with msg_name to capture the source endpoint.
603
604 @tparam Base The backend's base op type.
605 @tparam Endpoint The endpoint type (endpoint or local_endpoint).
606 */
607 template<class Base, class Endpoint = endpoint>
608 576x struct reactor_recv_from_op : Base
609 {
610 /// Maximum scatter-gather buffer count.
611 static constexpr std::size_t max_buffers = 16;
612
613 /// Scatter-gather I/O vectors.
614 iovec iovecs[max_buffers];
615
616 /// Number of active I/O vectors.
617 576x int iovec_count = 0;
618
619 /// Source address storage filled by recvmsg.
620 576x sockaddr_storage source_storage{};
621
622 /// Actual source address length returned by recvmsg.
623 576x socklen_t source_addrlen = 0;
624
625 /// Output pointer for the source endpoint (set by do_recv_from).
626 576x Endpoint* source_out = nullptr;
627
628 /// User-supplied message flags.
629 576x int msg_flags = 0;
630
631 /// Return true (this is a read-direction operation).
632 // LCOV_EXCL_START: devirtualized and inlined at the templated
633 // completion call site; the out-of-line body is never entered.
634 − bool is_read_operation() const noexcept override
635 {
636 − return true;
637 }
638 // LCOV_EXCL_STOP
639
640 119x void reset() noexcept
641 {
642 119x Base::reset();
643 119x iovec_count = 0;
644 119x source_storage = {};
645 119x source_addrlen = 0;
646 119x source_out = nullptr;
647 119x msg_flags = 0;
648 119x }
649
650 44x void perform_io() noexcept override
651 {
652 44x msghdr msg{};
653 44x msg.msg_name = &source_storage;
654 44x msg.msg_namelen = sizeof(source_storage);
655 44x msg.msg_iov = iovecs;
656 44x msg.msg_iovlen = static_cast<std::size_t>(iovec_count);
657
658 ssize_t n;
659 44x do
660 {
661
3/8
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 19 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
44x n = ::recvmsg(this->fd, &msg, msg_flags);
662 88x }
663
7/16
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 21 times.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 19 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
44x while (n < 0 && errno == EINTR);
664
665
5/8
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 21 times.
✓ Branch 2 taken 1 time.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 19 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
44x if (n >= 0)
666 {
667 42x source_addrlen = msg.msg_namelen;
668 42x this->complete(0, static_cast<std::size_t>(n));
669 42x }
670 else
671
2/8
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
2x this->complete(errno, 0);
672 44x }
673 };
674
675 } // namespace boost::corosio::detail
676
677 #endif // BOOST_COROSIO_NATIVE_DETAIL_REACTOR_REACTOR_OP_HPP
678