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

95.0% Lines (19/20) 75.0% List of functions (18/24)
reactor_datagram_ops.hpp
f(x) Functions (24)
Function Calls Lines Blocks
boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::epoll_local_datagram_socket, boost::corosio::detail::epoll_tcp_acceptor, boost::corosio::local_endpoint>::operator()() :86 6x 100.0% 100.0% boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::epoll_udp_socket, boost::corosio::detail::epoll_tcp_acceptor, boost::corosio::endpoint>::operator()() :86 9x 100.0% 100.0% 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>::operator()() :86 6x 100.0% 100.0% 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>::operator()() :86 9x 100.0% 100.0% boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::epoll_local_datagram_socket, boost::corosio::detail::epoll_tcp_acceptor, boost::corosio::local_endpoint>::cancel() :93 0 0.0% 0.0% boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::epoll_udp_socket, boost::corosio::detail::epoll_tcp_acceptor, boost::corosio::endpoint>::cancel() :93 1x 80.0% 75.0% 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>::cancel() :93 0 0.0% 0.0% 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>::cancel() :93 1x 80.0% 75.0% boost::corosio::detail::reactor_dgram_connect_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::epoll_local_datagram_socket, boost::corosio::detail::epoll_tcp_acceptor, boost::corosio::local_endpoint>::operator()() :103 0 0.0% 0.0% boost::corosio::detail::reactor_dgram_connect_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::epoll_udp_socket, boost::corosio::detail::epoll_tcp_acceptor, boost::corosio::endpoint>::operator()() :103 5x 100.0% 100.0% boost::corosio::detail::reactor_dgram_connect_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>::operator()() :103 0 0.0% 0.0% boost::corosio::detail::reactor_dgram_connect_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>::operator()() :103 5x 100.0% 100.0% boost::corosio::detail::reactor_dgram_recv_from_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::epoll_local_datagram_socket, boost::corosio::detail::epoll_tcp_acceptor, boost::corosio::local_endpoint>::operator()() :110 2x 100.0% 100.0% boost::corosio::detail::reactor_dgram_recv_from_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::epoll_udp_socket, boost::corosio::detail::epoll_tcp_acceptor, boost::corosio::endpoint>::operator()() :110 7x 100.0% 100.0% boost::corosio::detail::reactor_dgram_recv_from_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>::operator()() :110 2x 100.0% 100.0% boost::corosio::detail::reactor_dgram_recv_from_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>::operator()() :110 7x 100.0% 100.0% boost::corosio::detail::reactor_dgram_recv_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::epoll_local_datagram_socket, boost::corosio::detail::epoll_tcp_acceptor, boost::corosio::local_endpoint>::operator()() :117 1x 100.0% 100.0% boost::corosio::detail::reactor_dgram_recv_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::epoll_udp_socket, boost::corosio::detail::epoll_tcp_acceptor, boost::corosio::endpoint>::operator()() :117 2x 100.0% 100.0% boost::corosio::detail::reactor_dgram_recv_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>::operator()() :117 1x 100.0% 100.0% boost::corosio::detail::reactor_dgram_recv_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>::operator()() :117 2x 100.0% 100.0% boost::corosio::detail::reactor_dgram_wait_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::epoll_local_datagram_socket, boost::corosio::detail::epoll_tcp_acceptor, boost::corosio::local_endpoint>::operator()() :125 0 0.0% 0.0% boost::corosio::detail::reactor_dgram_wait_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::epoll_udp_socket, boost::corosio::detail::epoll_tcp_acceptor, boost::corosio::endpoint>::operator()() :125 2x 100.0% 100.0% boost::corosio::detail::reactor_dgram_wait_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_local_datagram_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::local_endpoint>::operator()() :125 0 0.0% 0.0% boost::corosio::detail::reactor_dgram_wait_op<boost::corosio::detail::select_traits, boost::corosio::detail::select_udp_socket, boost::corosio::detail::select_tcp_acceptor, boost::corosio::endpoint>::operator()() :125 2x 100.0% 100.0%
Line TLA Hits Source Code
1 //
2 // Copyright (c) 2026 Michael Vandeberg
3 //
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 //
7 // Official repository: https://github.com/cppalliance/corosio
8 //
9
10 #ifndef BOOST_COROSIO_NATIVE_DETAIL_REACTOR_REACTOR_DATAGRAM_OPS_HPP
11 #define BOOST_COROSIO_NATIVE_DETAIL_REACTOR_REACTOR_DATAGRAM_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 datagram op types for reactor backends.
19
20 @tparam Traits Backend traits (epoll_traits, kqueue_traits, etc.)
21 @tparam Socket The concrete datagram socket type (forward-declared).
22 @tparam DummyAcc Acceptor type placeholder (datagrams have no acceptor).
23 @tparam Endpoint The endpoint type (endpoint or local_endpoint).
24 */
25
26 template<class Traits, class Socket, class DummyAcc, class Endpoint>
27 struct reactor_dgram_base_op
28 : reactor_op<Socket, DummyAcc>
29 {
30 void operator()() override;
31 void cancel() noexcept override;
32 };
33
34 template<class Traits, class Socket, class DummyAcc, class Endpoint>
35 struct reactor_dgram_connect_op final
36 : reactor_connect_op<
37 reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>,
38 Endpoint>
39 {
40 void operator()() override;
41 };
42
43 template<class Traits, class Socket, class DummyAcc, class Endpoint>
44 struct reactor_dgram_send_to_op final
45 : reactor_send_to_op<
46 reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>>
47 {
48 };
49
50 template<class Traits, class Socket, class DummyAcc, class Endpoint>
51 struct reactor_dgram_recv_from_op final
52 : reactor_recv_from_op<
53 reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>,
54 Endpoint>
55 {
56 void operator()() override;
57 };
58
59 template<class Traits, class Socket, class DummyAcc, class Endpoint>
60 struct reactor_dgram_send_op final
61 : reactor_send_op<
62 reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>>
63 {
64 };
65
66 template<class Traits, class Socket, class DummyAcc, class Endpoint>
67 struct reactor_dgram_recv_op final
68 : reactor_recv_op<
69 reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>>
70 {
71 void operator()() override;
72 };
73
74 template<class Traits, class Socket, class DummyAcc, class Endpoint>
75 struct reactor_dgram_wait_op final
76 : reactor_wait_op<
77 reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>>
78 {
79 void operator()() override;
80 };
81
82 // --- Deferred implementations ---
83
84 template<class Traits, class Socket, class DummyAcc, class Endpoint>
85 void
86 30x reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>::operator()()
87 {
88 30x complete_io_op(*this);
89 30x }
90
91 template<class Traits, class Socket, class DummyAcc, class Endpoint>
92 void
93 2x reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>::cancel() noexcept
94 {
95 2x if (this->socket_impl_)
96 2x this->socket_impl_->cancel_single_op(*this);
97 else
98 this->request_cancel();
99 2x }
100
101 template<class Traits, class Socket, class DummyAcc, class Endpoint>
102 void
103 10x reactor_dgram_connect_op<Traits, Socket, DummyAcc, Endpoint>::operator()()
104 {
105 10x complete_connect_op(*this);
106 10x }
107
108 template<class Traits, class Socket, class DummyAcc, class Endpoint>
109 void
110 18x reactor_dgram_recv_from_op<Traits, Socket, DummyAcc, Endpoint>::operator()()
111 {
112 18x complete_datagram_op(*this, this->source_out);
113 18x }
114
115 template<class Traits, class Socket, class DummyAcc, class Endpoint>
116 void
117 6x reactor_dgram_recv_op<Traits, Socket, DummyAcc, Endpoint>::operator()()
118 {
119 // Datagram completion: zero-length datagrams are valid, not EOF.
120 6x complete_datagram_op(*this);
121 6x }
122
123 template<class Traits, class Socket, class DummyAcc, class Endpoint>
124 void
125 4x reactor_dgram_wait_op<Traits, Socket, DummyAcc, Endpoint>::operator()()
126 {
127 4x complete_wait_op(*this);
128 4x }
129
130 } // namespace boost::corosio::detail
131
132 #endif // BOOST_COROSIO_NATIVE_DETAIL_REACTOR_REACTOR_DATAGRAM_OPS_HPP
133