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)
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 |