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

67.9% Lines (38/56) 75.0% List of functions (12/16)
reactor_datagram_ops.hpp
f(x) Functions (16)
Function Calls Lines Blocks
boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::reactor_dgram_socket_final<boost::corosio::detail::epoll_traits, boost::corosio::local_datagram_socket::implementation, boost::corosio::local_endpoint>, boost::corosio::detail::reactor_acceptor_final<boost::corosio::detail::epoll_traits, boost::corosio::tcp_acceptor::implementation, boost::corosio::endpoint>, boost::corosio::local_endpoint>::operator()() :77 7x 100.0% 100.0% boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::reactor_dgram_socket_final<boost::corosio::detail::epoll_traits, boost::corosio::udp_socket::implementation, boost::corosio::endpoint>, boost::corosio::detail::reactor_acceptor_final<boost::corosio::detail::epoll_traits, boost::corosio::tcp_acceptor::implementation, boost::corosio::endpoint>, boost::corosio::endpoint>::operator()() :77 10x 100.0% 100.0% boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::reactor_dgram_socket_final<boost::corosio::detail::select_traits, boost::corosio::local_datagram_socket::implementation, boost::corosio::local_endpoint>, boost::corosio::detail::reactor_acceptor_final<boost::corosio::detail::select_traits, boost::corosio::tcp_acceptor::implementation, boost::corosio::endpoint>, boost::corosio::local_endpoint>::operator()() :77 7x 100.0% 100.0% boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::reactor_dgram_socket_final<boost::corosio::detail::select_traits, boost::corosio::udp_socket::implementation, boost::corosio::endpoint>, boost::corosio::detail::reactor_acceptor_final<boost::corosio::detail::select_traits, boost::corosio::tcp_acceptor::implementation, boost::corosio::endpoint>, boost::corosio::endpoint>::operator()() :77 10x 100.0% 100.0% boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::reactor_dgram_socket_final<boost::corosio::detail::epoll_traits, boost::corosio::local_datagram_socket::implementation, boost::corosio::local_endpoint>, boost::corosio::detail::reactor_acceptor_final<boost::corosio::detail::epoll_traits, boost::corosio::tcp_acceptor::implementation, boost::corosio::endpoint>, boost::corosio::local_endpoint>::cancel() :84 0 0.0% 0.0% boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::reactor_dgram_socket_final<boost::corosio::detail::epoll_traits, boost::corosio::udp_socket::implementation, boost::corosio::endpoint>, boost::corosio::detail::reactor_acceptor_final<boost::corosio::detail::epoll_traits, boost::corosio::tcp_acceptor::implementation, boost::corosio::endpoint>, boost::corosio::endpoint>::cancel() :84 1x 80.0% 75.0% boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::reactor_dgram_socket_final<boost::corosio::detail::select_traits, boost::corosio::local_datagram_socket::implementation, boost::corosio::local_endpoint>, boost::corosio::detail::reactor_acceptor_final<boost::corosio::detail::select_traits, boost::corosio::tcp_acceptor::implementation, boost::corosio::endpoint>, boost::corosio::local_endpoint>::cancel() :84 0 0.0% 0.0% boost::corosio::detail::reactor_dgram_base_op<boost::corosio::detail::select_traits, boost::corosio::detail::reactor_dgram_socket_final<boost::corosio::detail::select_traits, boost::corosio::udp_socket::implementation, boost::corosio::endpoint>, boost::corosio::detail::reactor_acceptor_final<boost::corosio::detail::select_traits, boost::corosio::tcp_acceptor::implementation, boost::corosio::endpoint>, boost::corosio::endpoint>::cancel() :84 1x 80.0% 75.0% boost::corosio::detail::reactor_dgram_connect_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::reactor_dgram_socket_final<boost::corosio::detail::epoll_traits, boost::corosio::local_datagram_socket::implementation, boost::corosio::local_endpoint>, boost::corosio::detail::reactor_acceptor_final<boost::corosio::detail::epoll_traits, boost::corosio::tcp_acceptor::implementation, boost::corosio::endpoint>, boost::corosio::local_endpoint>::operator()() :94 0 0.0% 0.0% boost::corosio::detail::reactor_dgram_connect_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::reactor_dgram_socket_final<boost::corosio::detail::epoll_traits, boost::corosio::udp_socket::implementation, boost::corosio::endpoint>, boost::corosio::detail::reactor_acceptor_final<boost::corosio::detail::epoll_traits, boost::corosio::tcp_acceptor::implementation, boost::corosio::endpoint>, boost::corosio::endpoint>::operator()() :94 5x 100.0% 100.0% boost::corosio::detail::reactor_dgram_connect_op<boost::corosio::detail::select_traits, boost::corosio::detail::reactor_dgram_socket_final<boost::corosio::detail::select_traits, boost::corosio::local_datagram_socket::implementation, boost::corosio::local_endpoint>, boost::corosio::detail::reactor_acceptor_final<boost::corosio::detail::select_traits, boost::corosio::tcp_acceptor::implementation, boost::corosio::endpoint>, boost::corosio::local_endpoint>::operator()() :94 0 0.0% 0.0% boost::corosio::detail::reactor_dgram_connect_op<boost::corosio::detail::select_traits, boost::corosio::detail::reactor_dgram_socket_final<boost::corosio::detail::select_traits, boost::corosio::udp_socket::implementation, boost::corosio::endpoint>, boost::corosio::detail::reactor_acceptor_final<boost::corosio::detail::select_traits, boost::corosio::tcp_acceptor::implementation, boost::corosio::endpoint>, boost::corosio::endpoint>::operator()() :94 5x 100.0% 100.0% boost::corosio::detail::reactor_dgram_recv_from_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::reactor_dgram_socket_final<boost::corosio::detail::epoll_traits, boost::corosio::local_datagram_socket::implementation, boost::corosio::local_endpoint>, boost::corosio::detail::reactor_acceptor_final<boost::corosio::detail::epoll_traits, boost::corosio::tcp_acceptor::implementation, boost::corosio::endpoint>, boost::corosio::local_endpoint>::operator()() :101 2x 100.0% 100.0% boost::corosio::detail::reactor_dgram_recv_from_op<boost::corosio::detail::epoll_traits, boost::corosio::detail::reactor_dgram_socket_final<boost::corosio::detail::epoll_traits, boost::corosio::udp_socket::implementation, boost::corosio::endpoint>, boost::corosio::detail::reactor_acceptor_final<boost::corosio::detail::epoll_traits, boost::corosio::tcp_acceptor::implementation, boost::corosio::endpoint>, boost::corosio::endpoint>::operator()() :101 7x 100.0% 100.0% boost::corosio::detail::reactor_dgram_recv_from_op<boost::corosio::detail::select_traits, boost::corosio::detail::reactor_dgram_socket_final<boost::corosio::detail::select_traits, boost::corosio::local_datagram_socket::implementation, boost::corosio::local_endpoint>, boost::corosio::detail::reactor_acceptor_final<boost::corosio::detail::select_traits, boost::corosio::tcp_acceptor::implementation, boost::corosio::endpoint>, boost::corosio::local_endpoint>::operator()() :101 2x 100.0% 100.0% boost::corosio::detail::reactor_dgram_recv_from_op<boost::corosio::detail::select_traits, boost::corosio::detail::reactor_dgram_socket_final<boost::corosio::detail::select_traits, boost::corosio::udp_socket::implementation, boost::corosio::endpoint>, boost::corosio::detail::reactor_acceptor_final<boost::corosio::detail::select_traits, boost::corosio::tcp_acceptor::implementation, boost::corosio::endpoint>, boost::corosio::endpoint>::operator()() :101 7x 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 };
72
73 // --- Deferred implementations ---
74
75 template<class Traits, class Socket, class DummyAcc, class Endpoint>
76 void
77 34x reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>::operator()()
78 {
79 34x complete_io_op(*this);
80 34x }
81
82 template<class Traits, class Socket, class DummyAcc, class Endpoint>
83 void
84 2x reactor_dgram_base_op<Traits, Socket, DummyAcc, Endpoint>::cancel() noexcept
85 {
86 2x if (this->socket_impl_)
87 2x this->socket_impl_->cancel_single_op(*this);
88 else
89 this->request_cancel();
90 2x }
91
92 template<class Traits, class Socket, class DummyAcc, class Endpoint>
93 void
94 10x reactor_dgram_connect_op<Traits, Socket, DummyAcc, Endpoint>::operator()()
95 {
96 10x complete_connect_op(*this);
97 10x }
98
99 template<class Traits, class Socket, class DummyAcc, class Endpoint>
100 void
101 18x reactor_dgram_recv_from_op<Traits, Socket, DummyAcc, Endpoint>::operator()()
102 {
103 18x complete_datagram_op(*this, this->source_out);
104 18x }
105
106 } // namespace boost::corosio::detail
107
108 #endif // BOOST_COROSIO_NATIVE_DETAIL_REACTOR_REACTOR_DATAGRAM_OPS_HPP
109