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

94.1% Lines (16/17) 80.0% List of functions (16/20)
reactor_datagram_ops.hpp
f(x) Functions (20)
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()() :78 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()() :78 8x 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()() :78 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()() :78 8x 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() :85 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() :85 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() :85 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() :85 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()() :95 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()() :95 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()() :95 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()() :95 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()() :102 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()() :102 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()() :102 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()() :102 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()() :109 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()() :109 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()() :109 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()() :109 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 // --- Deferred implementations ---
75
76 template<class Traits, class Socket, class DummyAcc, class Endpoint>
77 void
78 28x reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>::operator()()
79 {
80 28x complete_io_op(*this);
81 28x }
82
83 template<class Traits, class Socket, class DummyAcc, class Endpoint>
84 void
85 2x reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>::cancel() noexcept
86 {
87 2x if (this->socket_impl_)
88 2x this->socket_impl_->cancel_single_op(*this);
89 else
90 this->request_cancel();
91 2x }
92
93 template<class Traits, class Socket, class DummyAcc, class Endpoint>
94 void
95 10x reactor_dgram_connect_op<Traits, Socket, DummyAcc, Endpoint>::operator()()
96 {
97 10x complete_connect_op(*this);
98 10x }
99
100 template<class Traits, class Socket, class DummyAcc, class Endpoint>
101 void
102 18x reactor_dgram_recv_from_op<Traits, Socket, DummyAcc, Endpoint>::operator()()
103 {
104 18x complete_datagram_op(*this, this->source_out);
105 18x }
106
107 template<class Traits, class Socket, class DummyAcc, class Endpoint>
108 void
109 6x reactor_dgram_recv_op<Traits, Socket, DummyAcc, Endpoint>::operator()()
110 {
111 // Datagram completion: zero-length datagrams are valid, not EOF.
112 6x complete_datagram_op(*this);
113 6x }
114
115 } // namespace boost::corosio::detail
116
117 #endif // BOOST_COROSIO_NATIVE_DETAIL_REACTOR_REACTOR_DATAGRAM_OPS_HPP
118