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

96.9% Lines (31 / 32) 37.5% Branches (24 / 64) 100.0% Functions (72 / 72)
reactor_stream_ops.hpp
f(x) Functions (72)
Function Calls Lines Branches Blocks
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_stream_base_op() :34 1250x 100.0% – 100.0% 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_stream_base_op() :34 1250x 100.0% – 100.0% 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_stream_base_op() :34 32106x 100.0% – 100.0% 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_stream_base_op() :34 32104x 100.0% – 100.0% 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_stream_base_op() :34 1206x 100.0% – 100.0% 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_stream_base_op() :34 1206x 100.0% – 100.0% 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_stream_base_op() :34 15017x 100.0% – 100.0% 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_stream_base_op() :34 15018x 100.0% – 100.0% boost::corosio::detail::reactor_stream_connect_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_stream_connect_op() :41 338x 100.0% – 100.0% boost::corosio::detail::reactor_stream_connect_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_stream_connect_op() :41 338x 100.0% – 100.0% boost::corosio::detail::reactor_stream_connect_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>::reactor_stream_connect_op() :41 9044x 100.0% – 100.0% boost::corosio::detail::reactor_stream_connect_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>::~reactor_stream_connect_op() :41 9042x 100.0% – 100.0% boost::corosio::detail::reactor_stream_connect_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_stream_connect_op() :41 326x 100.0% – 100.0% boost::corosio::detail::reactor_stream_connect_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_stream_connect_op() :41 326x 100.0% – 100.0% boost::corosio::detail::reactor_stream_connect_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>::reactor_stream_connect_op() :41 3974x 100.0% – 100.0% boost::corosio::detail::reactor_stream_connect_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>::~reactor_stream_connect_op() :41 3974x 100.0% – 100.0% boost::corosio::detail::reactor_stream_read_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_stream_read_op() :50 338x 100.0% – 100.0% boost::corosio::detail::reactor_stream_read_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_stream_read_op() :50 338x 100.0% – 100.0% boost::corosio::detail::reactor_stream_read_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>::reactor_stream_read_op() :50 9044x 100.0% – 100.0% boost::corosio::detail::reactor_stream_read_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>::~reactor_stream_read_op() :50 9044x 100.0% – 100.0% boost::corosio::detail::reactor_stream_read_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_stream_read_op() :50 326x 100.0% – 100.0% boost::corosio::detail::reactor_stream_read_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_stream_read_op() :50 326x 100.0% – 100.0% boost::corosio::detail::reactor_stream_read_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>::reactor_stream_read_op() :50 3974x 100.0% – 100.0% boost::corosio::detail::reactor_stream_read_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>::~reactor_stream_read_op() :50 3974x 100.0% – 100.0% boost::corosio::detail::reactor_stream_read_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() :56 263x 100.0% – 93.0% boost::corosio::detail::reactor_stream_read_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>::perform_io() :56 53071x 92.3% 41.7% 93.0% boost::corosio::detail::reactor_stream_read_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() :56 262x 100.0% 29.2% 66.0% boost::corosio::detail::reactor_stream_read_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>::perform_io() :56 34379x 100.0% 75.0% 93.0% boost::corosio::detail::reactor_stream_write_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_stream_write_op() :78 338x 100.0% – 100.0% boost::corosio::detail::reactor_stream_write_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_stream_write_op() :78 338x 100.0% – 100.0% boost::corosio::detail::reactor_stream_write_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>::reactor_stream_write_op() :78 9042x 100.0% – 100.0% boost::corosio::detail::reactor_stream_write_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>::~reactor_stream_write_op() :78 9044x 100.0% – 100.0% boost::corosio::detail::reactor_stream_write_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_stream_write_op() :78 326x 100.0% – 100.0% boost::corosio::detail::reactor_stream_write_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_stream_write_op() :78 326x 100.0% – 100.0% boost::corosio::detail::reactor_stream_write_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>::reactor_stream_write_op() :78 3974x 100.0% – 100.0% boost::corosio::detail::reactor_stream_write_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>::~reactor_stream_write_op() :78 3974x 100.0% – 100.0% boost::corosio::detail::reactor_stream_accept_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_stream_accept_op() :85 118x 100.0% – 100.0% boost::corosio::detail::reactor_stream_accept_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_stream_accept_op() :85 118x 100.0% – 100.0% boost::corosio::detail::reactor_stream_accept_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>::reactor_stream_accept_op() :85 2488x 100.0% – 100.0% boost::corosio::detail::reactor_stream_accept_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>::~reactor_stream_accept_op() :85 2488x 100.0% – 100.0% boost::corosio::detail::reactor_stream_accept_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_stream_accept_op() :85 114x 100.0% – 100.0% boost::corosio::detail::reactor_stream_accept_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_stream_accept_op() :85 114x 100.0% – 100.0% boost::corosio::detail::reactor_stream_accept_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>::reactor_stream_accept_op() :85 1548x 100.0% – 100.0% boost::corosio::detail::reactor_stream_accept_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>::~reactor_stream_accept_op() :85 1548x 100.0% – 100.0% boost::corosio::detail::reactor_stream_wait_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_stream_wait_op() :94 1368x 100.0% – 100.0% boost::corosio::detail::reactor_stream_wait_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_stream_wait_op() :94 1368x 100.0% – 100.0% boost::corosio::detail::reactor_stream_wait_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>::reactor_stream_wait_op() :94 34594x 100.0% – 100.0% boost::corosio::detail::reactor_stream_wait_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>::~reactor_stream_wait_op() :94 34591x 100.0% – 100.0% boost::corosio::detail::reactor_stream_wait_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_stream_wait_op() :94 1320x 100.0% – 100.0% boost::corosio::detail::reactor_stream_wait_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_stream_wait_op() :94 1320x 100.0% – 100.0% boost::corosio::detail::reactor_stream_wait_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>::reactor_stream_wait_op() :94 16566x 100.0% – 100.0% boost::corosio::detail::reactor_stream_wait_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>::~reactor_stream_wait_op() :94 16566x 100.0% – 100.0% 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>::operator()() :105 549x 100.0% – 100.0% 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>::operator()() :105 199724x 100.0% – 100.0% 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>::operator()() :105 546x 100.0% – 100.0% 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>::operator()() :105 136924x 100.0% – 100.0% 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>::cancel() :112 4x 100.0% – 85.0% 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>::cancel() :112 1513x 85.7% 75.0% 85.0% 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>::cancel() :112 4x 85.7% 37.5% 85.0% 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>::cancel() :112 496x 85.7% 75.0% 85.0% boost::corosio::detail::reactor_stream_connect_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>::operator()() :124 17x 100.0% – 100.0% boost::corosio::detail::reactor_stream_connect_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>::operator()() :124 12380x 100.0% – 100.0% boost::corosio::detail::reactor_stream_connect_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>::operator()() :124 16x 100.0% – 100.0% boost::corosio::detail::reactor_stream_connect_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>::operator()() :124 2210x 100.0% – 100.0% boost::corosio::detail::reactor_stream_accept_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>::operator()() :131 22x 100.0% – 100.0% boost::corosio::detail::reactor_stream_accept_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>::operator()() :131 7482x 100.0% – 100.0% boost::corosio::detail::reactor_stream_accept_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>::operator()() :131 21x 100.0% – 100.0% boost::corosio::detail::reactor_stream_accept_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>::operator()() :131 4759x 100.0% – 100.0% boost::corosio::detail::reactor_stream_wait_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_local_stream_socket, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::local_endpoint>::operator()() :138 13x 100.0% – 100.0% boost::corosio::detail::reactor_stream_wait_op<boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_tcp_socket, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::endpoint>::operator()() :138 52x 100.0% – 100.0% boost::corosio::detail::reactor_stream_wait_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_stream_socket, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::local_endpoint>::operator()() :138 13x 100.0% – 100.0% boost::corosio::detail::reactor_stream_wait_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_tcp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>::operator()() :138 47x 100.0% – 100.0%
Line Branch TLA Hits Source Code
1 //
2 // Copyright (c) 2026 Michael Vandeberg
3 //
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 //
7 // Official repository: https://github.com/cppalliance/corosio
8 //
9
10 #ifndef BOOST_COROSIO_NATIVE_DETAIL_REACTOR_REACTOR_STREAM_OPS_HPP
11 #define BOOST_COROSIO_NATIVE_DETAIL_REACTOR_REACTOR_STREAM_OPS_HPP
12
13 #include <boost/corosio/native/detail/reactor/reactor_op.hpp>
14 #include <boost/corosio/native/detail/reactor/reactor_op_complete.hpp>
15
16 namespace boost::corosio::detail {
17
18 /* Parameterized stream op types for reactor backends.
19
20 Given a Traits type (providing write_policy, accept_policy) and
21 forward-declared Socket/Acceptor types, generates all the concrete
22 op types needed for a stream socket. The cancel() and operator()()
23 bodies reference Socket/Acceptor but are only instantiated when the
24 vtable of a derived type is emitted -- at which point those types
25 are complete.
26
27 @tparam Traits Backend traits (epoll_traits, kqueue_traits, etc.)
28 @tparam Socket The concrete stream socket type (forward-declared).
29 @tparam Acceptor The concrete stream acceptor type (forward-declared).
30 @tparam Endpoint The endpoint type (endpoint or local_endpoint).
31 */
32
33 template<class Traits, class Socket, class Acceptor, class Endpoint>
34 struct reactor_stream_base_op : reactor_op<Socket, Acceptor>
35 {
36 void operator()() override;
37 void cancel() noexcept override;
38 };
39
40 template<class Traits, class Socket, class Acceptor, class Endpoint>
41 struct reactor_stream_connect_op final
42 : reactor_connect_op<
43 reactor_stream_base_op<Traits, Socket, Acceptor, Endpoint>,
44 Endpoint>
45 {
46 void operator()() override;
47 };
48
49 template<class Traits, class Socket, class Acceptor, class Endpoint>
50 struct reactor_stream_read_op final
51 : reactor_read_op<
52 reactor_stream_base_op<Traits, Socket, Acceptor, Endpoint>>
53 {
54 // A single buffer reads with recv(), which skips the VFS layer and
55 // the iovec copy-in that readv() pays on every call.
56 87975x void perform_io() noexcept override
57 {
58
4/8
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 53330 times.
✓ Branch 2 taken 3 times.
✓ Branch 3 taken 34638 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
87975x if (this->iovec_count != 1)
59 7x return reactor_read_op<reactor_stream_base_op<
60 7x Traits, Socket, Acceptor, Endpoint>>::perform_io();
61
62 ssize_t n;
63 87968x do
64 {
65
2/8
✓ Branch 0 taken 53330 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 34638 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
87968x n = ::recv(
66 87968x this->fd, this->iovecs[0].iov_base, this->iovecs[0].iov_len, 0);
67 175936x }
68
6/16
✓ Branch 0 taken 485 times.
✓ Branch 1 taken 52845 times.
✓ Branch 2 taken 485 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1331 times.
✓ Branch 5 taken 33307 times.
✓ Branch 6 taken 1331 times.
✗ 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.
87968x while (n < 0 && errno == EINTR);
69
70
4/8
✓ Branch 0 taken 485 times.
✓ Branch 1 taken 52845 times.
✓ Branch 2 taken 1331 times.
✓ Branch 3 taken 33307 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
87968x if (n >= 0)
71 86152x this->complete(0, static_cast<std::size_t>(n));
72 else
73
2/8
✓ Branch 0 taken 485 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1331 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1816x this->complete(errno, 0);
74 87975x }
75 };
76
77 template<class Traits, class Socket, class Acceptor, class Endpoint>
78 struct reactor_stream_write_op final
79 : reactor_write_op<
80 reactor_stream_base_op<Traits, Socket, Acceptor, Endpoint>,
81 typename Traits::write_policy>
82 {};
83
84 template<class Traits, class Socket, class Acceptor, class Endpoint>
85 struct reactor_stream_accept_op final
86 : reactor_accept_op<
87 reactor_stream_base_op<Traits, Socket, Acceptor, Endpoint>,
88 typename Traits::accept_policy>
89 {
90 void operator()() override;
91 };
92
93 template<class Traits, class Socket, class Acceptor, class Endpoint>
94 struct reactor_stream_wait_op final
95 : reactor_wait_op<
96 reactor_stream_base_op<Traits, Socket, Acceptor, Endpoint>>
97 {
98 void operator()() override;
99 };
100
101 // --- Deferred implementations (instantiated when Socket/Acceptor are complete) ---
102
103 template<class Traits, class Socket, class Acceptor, class Endpoint>
104 void
105 337743x reactor_stream_base_op<Traits, Socket, Acceptor, Endpoint>::operator()()
106 {
107 337743x complete_io_op(*this);
108 337743x }
109
110 template<class Traits, class Socket, class Acceptor, class Endpoint>
111 void
112 2017x reactor_stream_base_op<Traits, Socket, Acceptor, Endpoint>::cancel() noexcept
113 {
114
4/8
✓ Branch 0 taken 1061 times.
✓ Branch 1 taken 456 times.
✓ Branch 2 taken 238 times.
✓ Branch 3 taken 262 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
2017x if (this->socket_impl_)
115 1299x this->socket_impl_->cancel_single_op(*this);
116
2/8
✓ Branch 0 taken 456 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 262 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
718x else if (this->acceptor_impl_)
117 718x this->acceptor_impl_->cancel_single_op(*this);
118 else
119 ✗ this->request_cancel();
120 2017x }
121
122 template<class Traits, class Socket, class Acceptor, class Endpoint>
123 void
124 14623x reactor_stream_connect_op<Traits, Socket, Acceptor, Endpoint>::operator()()
125 {
126 14623x complete_connect_op(*this);
127 14623x }
128
129 template<class Traits, class Socket, class Acceptor, class Endpoint>
130 void
131 12284x reactor_stream_accept_op<Traits, Socket, Acceptor, Endpoint>::operator()()
132 {
133 12284x complete_accept_op<Socket>(*this);
134 12284x }
135
136 template<class Traits, class Socket, class Acceptor, class Endpoint>
137 void
138 125x reactor_stream_wait_op<Traits, Socket, Acceptor, Endpoint>::operator()()
139 {
140 125x complete_wait_op(*this);
141 125x }
142
143 } // namespace boost::corosio::detail
144
145 #endif // BOOST_COROSIO_NATIVE_DETAIL_REACTOR_REACTOR_STREAM_OPS_HPP
146