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

95.0% Lines (19/0/20) 100.0% List of functions (24/0/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()() :80 57x 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()() :80 35x 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()() :80 55x 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()() :80 33x 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() :87 15x 80.0% 75.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() :87 17x 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() :87 15x 80.0% 75.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() :87 15x 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()() :97 4x 100.0% 100.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()() :97 19x 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()() :97 4x 100.0% 100.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()() :97 19x 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()() :104 23x 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()() :104 27x 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()() :104 22x 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()() :104 23x 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()() :111 26x 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()() :111 11x 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()() :111 26x 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()() :111 50x 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()() :119 9x 100.0% 100.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()() :119 15x 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()() :119 9x 100.0% 100.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()() :119 15x 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 : reactor_op<Socket, DummyAcc>
28 {
29 void operator()() override;
30 void cancel() noexcept override;
31 };
32
33 template<class Traits, class Socket, class DummyAcc, class Endpoint>
34 struct reactor_dgram_connect_op final
35 : reactor_connect_op<
36 reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>,
37 Endpoint>
38 {
39 void operator()() override;
40 };
41
42 template<class Traits, class Socket, class DummyAcc, class Endpoint>
43 struct reactor_dgram_send_to_op final
44 : reactor_send_to_op<
45 reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>>
46 {};
47
48 template<class Traits, class Socket, class DummyAcc, class Endpoint>
49 struct reactor_dgram_recv_from_op final
50 : reactor_recv_from_op<
51 reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>,
52 Endpoint>
53 {
54 void operator()() override;
55 };
56
57 template<class Traits, class Socket, class DummyAcc, class Endpoint>
58 struct reactor_dgram_send_op final
59 : reactor_send_op<reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>>
60 {};
61
62 template<class Traits, class Socket, class DummyAcc, class Endpoint>
63 struct reactor_dgram_recv_op final
64 : reactor_recv_op<reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>>
65 {
66 void operator()() override;
67 };
68
69 template<class Traits, class Socket, class DummyAcc, class Endpoint>
70 struct reactor_dgram_wait_op final
71 : reactor_wait_op<reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>>
72 {
73 void operator()() override;
74 };
75
76 // --- Deferred implementations ---
77
78 template<class Traits, class Socket, class DummyAcc, class Endpoint>
79 void
80 180x reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>::operator()()
81 {
82 180x complete_io_op(*this);
83 180x }
84
85 template<class Traits, class Socket, class DummyAcc, class Endpoint>
86 void
87 62x reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>::cancel() noexcept
88 {
89 62x if (this->socket_impl_)
90 62x this->socket_impl_->cancel_single_op(*this);
91 else
92 this->request_cancel();
93 62x }
94
95 template<class Traits, class Socket, class DummyAcc, class Endpoint>
96 void
97 46x reactor_dgram_connect_op<Traits, Socket, DummyAcc, Endpoint>::operator()()
98 {
99 46x complete_connect_op(*this);
100 46x }
101
102 template<class Traits, class Socket, class DummyAcc, class Endpoint>
103 void
104 95x reactor_dgram_recv_from_op<Traits, Socket, DummyAcc, Endpoint>::operator()()
105 {
106 95x complete_datagram_op(*this, this->source_out);
107 95x }
108
109 template<class Traits, class Socket, class DummyAcc, class Endpoint>
110 void
111 113x reactor_dgram_recv_op<Traits, Socket, DummyAcc, Endpoint>::operator()()
112 {
113 // Datagram completion: zero-length datagrams are valid, not EOF.
114 113x complete_datagram_op(*this);
115 113x }
116
117 template<class Traits, class Socket, class DummyAcc, class Endpoint>
118 void
119 48x reactor_dgram_wait_op<Traits, Socket, DummyAcc, Endpoint>::operator()()
120 {
121 48x complete_wait_op(*this);
122 48x }
123
124 } // namespace boost::corosio::detail
125
126 #endif // BOOST_COROSIO_NATIVE_DETAIL_REACTOR_REACTOR_DATAGRAM_OPS_HPP
127