include/boost/corosio/native/detail/epoll/epoll_types.hpp

95.0% Lines (38/0/40) 94.7% List of functions (18/0/19)
epoll_types.hpp
f(x) Functions (19)
Function Calls Lines Blocks
boost::corosio::detail::epoll_tcp_socket::epoll_tcp_socket(boost::corosio::detail::epoll_tcp_service&) :57 11297x 100.0% 100.0% boost::corosio::detail::epoll_tcp_socket::release_socket() :60 1x 100.0% 100.0% boost::corosio::detail::epoll_local_stream_socket::epoll_local_stream_socket(boost::corosio::detail::epoll_local_stream_service&) :79 127x 100.0% 100.0% boost::corosio::detail::epoll_local_stream_socket::release_socket() :82 2x 100.0% 100.0% boost::corosio::detail::epoll_udp_socket::epoll_udp_socket(boost::corosio::detail::epoll_udp_service&) :101 135x 100.0% 100.0% boost::corosio::detail::epoll_udp_socket::shutdown(boost::corosio::shutdown_type) :104 1x 100.0% 100.0% boost::corosio::detail::epoll_udp_socket::release_socket() :109 1x 100.0% 100.0% boost::corosio::detail::epoll_local_datagram_socket::epoll_local_datagram_socket(boost::corosio::detail::epoll_local_datagram_service&) :127 104x 100.0% 100.0% boost::corosio::detail::epoll_local_datagram_socket::shutdown(boost::corosio::shutdown_type) :130 4x 100.0% 100.0% boost::corosio::detail::epoll_local_datagram_socket::bind(boost::corosio::local_endpoint) :135 0 0.0% 0.0% boost::corosio::detail::epoll_local_datagram_socket::release_socket() :140 1x 100.0% 100.0% boost::corosio::detail::epoll_tcp_acceptor::epoll_tcp_acceptor(boost::corosio::detail::epoll_tcp_acceptor_service&) :160 262x 100.0% 100.0% boost::corosio::detail::epoll_local_stream_acceptor::epoll_local_stream_acceptor(boost::corosio::detail::epoll_local_stream_acceptor_service&) :178 47x 100.0% 100.0% boost::corosio::detail::epoll_tcp_service::epoll_tcp_service(boost::capy::execution_context&) :192 902x 100.0% 100.0% boost::corosio::detail::epoll_local_stream_service::epoll_local_stream_service(boost::capy::execution_context&) :205 902x 100.0% 100.0% boost::corosio::detail::epoll_udp_service::epoll_udp_service(boost::capy::execution_context&) :216 902x 100.0% 100.0% boost::corosio::detail::epoll_local_datagram_service::epoll_local_datagram_service(boost::capy::execution_context&) :229 902x 100.0% 100.0% boost::corosio::detail::epoll_tcp_acceptor_service::epoll_tcp_acceptor_service(boost::capy::execution_context&) :244 902x 100.0% 100.0% boost::corosio::detail::epoll_local_stream_acceptor_service::epoll_local_stream_acceptor_service(boost::capy::execution_context&) :261 902x 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_EPOLL_EPOLL_TYPES_HPP
11 #define BOOST_COROSIO_NATIVE_DETAIL_EPOLL_EPOLL_TYPES_HPP
12
13 #include <boost/corosio/detail/platform.hpp>
14
15 #if BOOST_COROSIO_HAS_EPOLL
16
17 /* Named per-backend types for the epoll reactor.
18
19 Each class is a final, named wrapper around the parameterized
20 reactor_*_impl templates. Forward-declarable from backend.hpp
21 so the concrete layer never pulls in platform headers.
22 */
23
24 #include <boost/corosio/detail/config.hpp>
25 #include <boost/corosio/native/detail/epoll/epoll_traits.hpp>
26 #include <boost/corosio/native/detail/epoll/epoll_scheduler.hpp>
27 #include <boost/corosio/native/detail/reactor/reactor_backend.hpp>
28
29 namespace boost::corosio::detail {
30
31 // Forward declarations for cross-references.
32 class epoll_tcp_socket;
33 class epoll_tcp_service;
34 class epoll_tcp_acceptor;
35 class epoll_tcp_acceptor_service;
36 class epoll_udp_socket;
37 class epoll_udp_service;
38 class epoll_local_stream_socket;
39 class epoll_local_stream_service;
40 class epoll_local_stream_acceptor;
41 class epoll_local_stream_acceptor_service;
42 class epoll_local_datagram_socket;
43 class epoll_local_datagram_service;
44
45 // --- Stream sockets ---
46
47 class epoll_tcp_socket final
48 : public reactor_stream_socket_impl<
49 epoll_tcp_socket, epoll_traits, epoll_tcp_service,
50 epoll_tcp_acceptor, tcp_socket::implementation, endpoint>
51 {
52 using base_type = reactor_stream_socket_impl<
53 epoll_tcp_socket, epoll_traits, epoll_tcp_service,
54 epoll_tcp_acceptor, tcp_socket::implementation, endpoint>;
55 friend epoll_tcp_service;
56 public:
57 11297x explicit epoll_tcp_socket(epoll_tcp_service& svc) noexcept
58 11297x : base_type(svc) {}
59
60 1x native_handle_type release_socket() noexcept override
61 {
62 1x hook_ = {};
63 1x return this->do_release_socket();
64 }
65 };
66
67 class epoll_local_stream_socket final
68 : public reactor_stream_socket_impl<
69 epoll_local_stream_socket, epoll_traits,
70 epoll_local_stream_service, epoll_local_stream_acceptor,
71 local_stream_socket::implementation, corosio::local_endpoint>
72 {
73 using base_type = reactor_stream_socket_impl<
74 epoll_local_stream_socket, epoll_traits,
75 epoll_local_stream_service, epoll_local_stream_acceptor,
76 local_stream_socket::implementation, corosio::local_endpoint>;
77 friend epoll_local_stream_service;
78 public:
79 127x explicit epoll_local_stream_socket(epoll_local_stream_service& svc) noexcept
80 127x : base_type(svc) {}
81
82 2x native_handle_type release_socket() noexcept override
83 {
84 2x hook_ = {};
85 2x return this->do_release_socket();
86 }
87 };
88
89 // --- Datagram sockets ---
90
91 class epoll_udp_socket final
92 : public reactor_dgram_socket_impl<
93 epoll_udp_socket, epoll_traits, epoll_udp_service,
94 epoll_tcp_acceptor, udp_socket::implementation, endpoint>
95 {
96 using base_type = reactor_dgram_socket_impl<
97 epoll_udp_socket, epoll_traits, epoll_udp_service,
98 epoll_tcp_acceptor, udp_socket::implementation, endpoint>;
99 friend epoll_udp_service;
100 public:
101 135x explicit epoll_udp_socket(epoll_udp_service& svc) noexcept
102 135x : base_type(svc) {}
103
104 1x std::error_code shutdown(corosio::shutdown_type what) noexcept override
105 {
106 1x return this->do_shutdown(static_cast<int>(what));
107 }
108
109 1x native_handle_type release_socket() noexcept override
110 {
111 1x return this->do_release_socket();
112 }
113 };
114
115 class epoll_local_datagram_socket final
116 : public reactor_dgram_socket_impl<
117 epoll_local_datagram_socket, epoll_traits,
118 epoll_local_datagram_service, epoll_tcp_acceptor,
119 local_datagram_socket::implementation, corosio::local_endpoint>
120 {
121 using base_type = reactor_dgram_socket_impl<
122 epoll_local_datagram_socket, epoll_traits,
123 epoll_local_datagram_service, epoll_tcp_acceptor,
124 local_datagram_socket::implementation, corosio::local_endpoint>;
125 friend epoll_local_datagram_service;
126 public:
127 104x explicit epoll_local_datagram_socket(epoll_local_datagram_service& svc) noexcept
128 104x : base_type(svc) {}
129
130 4x std::error_code shutdown(corosio::shutdown_type what) noexcept override
131 {
132 4x return this->do_shutdown(static_cast<int>(what));
133 }
134
135 std::error_code bind(corosio::local_endpoint ep) noexcept override
136 {
137 return this->do_bind(ep);
138 }
139
140 1x native_handle_type release_socket() noexcept override
141 {
142 1x return this->do_release_socket();
143 }
144 };
145
146 // --- Acceptors ---
147
148 class epoll_tcp_acceptor final
149 : public reactor_acceptor_impl<
150 epoll_tcp_acceptor, epoll_traits,
151 epoll_tcp_acceptor_service, epoll_tcp_socket,
152 tcp_acceptor::implementation, endpoint>
153 {
154 using base_type = reactor_acceptor_impl<
155 epoll_tcp_acceptor, epoll_traits,
156 epoll_tcp_acceptor_service, epoll_tcp_socket,
157 tcp_acceptor::implementation, endpoint>;
158 friend epoll_tcp_acceptor_service;
159 public:
160 262x explicit epoll_tcp_acceptor(epoll_tcp_acceptor_service& svc) noexcept
161 262x : base_type(svc) {}
162 };
163
164 class epoll_local_stream_acceptor final
165 : public reactor_acceptor_impl<
166 epoll_local_stream_acceptor, epoll_traits,
167 epoll_local_stream_acceptor_service,
168 epoll_local_stream_socket,
169 local_stream_acceptor::implementation, corosio::local_endpoint>
170 {
171 using base_type = reactor_acceptor_impl<
172 epoll_local_stream_acceptor, epoll_traits,
173 epoll_local_stream_acceptor_service,
174 epoll_local_stream_socket,
175 local_stream_acceptor::implementation, corosio::local_endpoint>;
176 friend epoll_local_stream_acceptor_service;
177 public:
178 47x explicit epoll_local_stream_acceptor(
179 epoll_local_stream_acceptor_service& svc) noexcept
180 47x : base_type(svc) {}
181 };
182
183 // --- Services ---
184
185 class BOOST_COROSIO_DECL epoll_tcp_service final
186 : public reactor_tcp_service_impl<
187 epoll_tcp_service, epoll_traits, epoll_tcp_socket>
188 {
189 using base_type = reactor_tcp_service_impl<
190 epoll_tcp_service, epoll_traits, epoll_tcp_socket>;
191 public:
192 902x explicit epoll_tcp_service(capy::execution_context& ctx)
193 902x : base_type(ctx) {}
194 };
195
196 class BOOST_COROSIO_DECL epoll_local_stream_service final
197 : public reactor_local_stream_service_impl<
198 epoll_local_stream_service, epoll_traits,
199 epoll_local_stream_socket>
200 {
201 using base_type = reactor_local_stream_service_impl<
202 epoll_local_stream_service, epoll_traits,
203 epoll_local_stream_socket>;
204 public:
205 902x explicit epoll_local_stream_service(capy::execution_context& ctx)
206 902x : base_type(ctx) {}
207 };
208
209 class BOOST_COROSIO_DECL epoll_udp_service final
210 : public reactor_udp_service_impl<
211 epoll_udp_service, epoll_traits, epoll_udp_socket>
212 {
213 using base_type = reactor_udp_service_impl<
214 epoll_udp_service, epoll_traits, epoll_udp_socket>;
215 public:
216 902x explicit epoll_udp_service(capy::execution_context& ctx)
217 902x : base_type(ctx) {}
218 };
219
220 class BOOST_COROSIO_DECL epoll_local_datagram_service final
221 : public reactor_local_dgram_service_impl<
222 epoll_local_datagram_service, epoll_traits,
223 epoll_local_datagram_socket>
224 {
225 using base_type = reactor_local_dgram_service_impl<
226 epoll_local_datagram_service, epoll_traits,
227 epoll_local_datagram_socket>;
228 public:
229 902x explicit epoll_local_datagram_service(capy::execution_context& ctx)
230 902x : base_type(ctx) {}
231 };
232
233 class BOOST_COROSIO_DECL epoll_tcp_acceptor_service final
234 : public reactor_acceptor_service_impl<
235 epoll_tcp_acceptor_service, epoll_traits,
236 tcp_acceptor_service, epoll_tcp_acceptor,
237 epoll_tcp_service, endpoint>
238 {
239 using base_type = reactor_acceptor_service_impl<
240 epoll_tcp_acceptor_service, epoll_traits,
241 tcp_acceptor_service, epoll_tcp_acceptor,
242 epoll_tcp_service, endpoint>;
243 public:
244 902x explicit epoll_tcp_acceptor_service(capy::execution_context& ctx)
245 902x : base_type(ctx) {}
246 };
247
248 class BOOST_COROSIO_DECL epoll_local_stream_acceptor_service final
249 : public reactor_acceptor_service_impl<
250 epoll_local_stream_acceptor_service, epoll_traits,
251 local_stream_acceptor_service,
252 epoll_local_stream_acceptor,
253 epoll_local_stream_service, corosio::local_endpoint>
254 {
255 using base_type = reactor_acceptor_service_impl<
256 epoll_local_stream_acceptor_service, epoll_traits,
257 local_stream_acceptor_service,
258 epoll_local_stream_acceptor,
259 epoll_local_stream_service, corosio::local_endpoint>;
260 public:
261 902x explicit epoll_local_stream_acceptor_service(capy::execution_context& ctx)
262 902x : base_type(ctx) {}
263 };
264
265 } // namespace boost::corosio::detail
266
267 #endif // BOOST_COROSIO_HAS_EPOLL
268
269 #endif // BOOST_COROSIO_NATIVE_DETAIL_EPOLL_EPOLL_TYPES_HPP
270