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

95.7% Lines (44/0/46) 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&) :66 7472x 100.0% 100.0% boost::corosio::detail::epoll_tcp_socket::release_socket() :70 2x 100.0% 100.0% boost::corosio::detail::epoll_local_stream_socket::epoll_local_stream_socket(boost::corosio::detail::epoll_local_stream_service&) :96 184x 100.0% 100.0% boost::corosio::detail::epoll_local_stream_socket::release_socket() :101 2x 100.0% 100.0% boost::corosio::detail::epoll_udp_socket::epoll_udp_socket(boost::corosio::detail::epoll_udp_service&) :129 160x 100.0% 100.0% boost::corosio::detail::epoll_udp_socket::shutdown(boost::corosio::shutdown_type) :133 3x 100.0% 100.0% boost::corosio::detail::epoll_udp_socket::release_socket() :138 2x 100.0% 100.0% boost::corosio::detail::epoll_local_datagram_socket::epoll_local_datagram_socket(boost::corosio::detail::epoll_local_datagram_service&) :163 140x 100.0% 100.0% boost::corosio::detail::epoll_local_datagram_socket::shutdown(boost::corosio::shutdown_type) :169 4x 100.0% 100.0% boost::corosio::detail::epoll_local_datagram_socket::bind(boost::corosio::local_endpoint) :174 0 0.0% 0.0% boost::corosio::detail::epoll_local_datagram_socket::release_socket() :179 2x 100.0% 100.0% boost::corosio::detail::epoll_tcp_acceptor::epoll_tcp_acceptor(boost::corosio::detail::epoll_tcp_acceptor_service&) :206 360x 100.0% 100.0% boost::corosio::detail::epoll_local_stream_acceptor::epoll_local_stream_acceptor(boost::corosio::detail::epoll_local_stream_acceptor_service&) :231 57x 100.0% 100.0% boost::corosio::detail::epoll_tcp_service::epoll_tcp_service(boost::capy::execution_context&) :252 1227x 100.0% 100.0% boost::corosio::detail::epoll_local_stream_service::epoll_local_stream_service(boost::capy::execution_context&) :267 1227x 100.0% 100.0% boost::corosio::detail::epoll_udp_service::epoll_udp_service(boost::capy::execution_context&) :285 1227x 100.0% 100.0% boost::corosio::detail::epoll_local_datagram_service::epoll_local_datagram_service(boost::capy::execution_context&) :300 1227x 100.0% 100.0% boost::corosio::detail::epoll_tcp_acceptor_service::epoll_tcp_acceptor_service(boost::capy::execution_context&) :324 1227x 100.0% 100.0% boost::corosio::detail::epoll_local_stream_acceptor_service::epoll_local_stream_acceptor_service(boost::capy::execution_context&) :348 1227x 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,
50 epoll_traits,
51 epoll_tcp_service,
52 epoll_tcp_acceptor,
53 tcp_socket::implementation,
54 endpoint>
55 {
56 using base_type = reactor_stream_socket_impl<
57 epoll_tcp_socket,
58 epoll_traits,
59 epoll_tcp_service,
60 epoll_tcp_acceptor,
61 tcp_socket::implementation,
62 endpoint>;
63 friend epoll_tcp_service;
64
65 public:
66 7472x explicit epoll_tcp_socket(epoll_tcp_service& svc) noexcept : base_type(svc)
67 {
68 7472x }
69
70 2x native_handle_type release_socket() noexcept override
71 {
72 2x hook_ = {};
73 2x return this->do_release_socket();
74 }
75 };
76
77 class epoll_local_stream_socket final
78 : public reactor_stream_socket_impl<
79 epoll_local_stream_socket,
80 epoll_traits,
81 epoll_local_stream_service,
82 epoll_local_stream_acceptor,
83 local_stream_socket::implementation,
84 corosio::local_endpoint>
85 {
86 using base_type = reactor_stream_socket_impl<
87 epoll_local_stream_socket,
88 epoll_traits,
89 epoll_local_stream_service,
90 epoll_local_stream_acceptor,
91 local_stream_socket::implementation,
92 corosio::local_endpoint>;
93 friend epoll_local_stream_service;
94
95 public:
96 184x explicit epoll_local_stream_socket(epoll_local_stream_service& svc) noexcept
97 184x : base_type(svc)
98 {
99 184x }
100
101 2x native_handle_type release_socket() noexcept override
102 {
103 2x hook_ = {};
104 2x return this->do_release_socket();
105 }
106 };
107
108 // --- Datagram sockets ---
109
110 class epoll_udp_socket final
111 : public reactor_dgram_socket_impl<
112 epoll_udp_socket,
113 epoll_traits,
114 epoll_udp_service,
115 epoll_tcp_acceptor,
116 udp_socket::implementation,
117 endpoint>
118 {
119 using base_type = reactor_dgram_socket_impl<
120 epoll_udp_socket,
121 epoll_traits,
122 epoll_udp_service,
123 epoll_tcp_acceptor,
124 udp_socket::implementation,
125 endpoint>;
126 friend epoll_udp_service;
127
128 public:
129 160x explicit epoll_udp_socket(epoll_udp_service& svc) noexcept : base_type(svc)
130 {
131 160x }
132
133 3x std::error_code shutdown(corosio::shutdown_type what) noexcept override
134 {
135 3x return this->do_shutdown(static_cast<int>(what));
136 }
137
138 2x native_handle_type release_socket() noexcept override
139 {
140 2x return this->do_release_socket();
141 }
142 };
143
144 class epoll_local_datagram_socket final
145 : public reactor_dgram_socket_impl<
146 epoll_local_datagram_socket,
147 epoll_traits,
148 epoll_local_datagram_service,
149 epoll_tcp_acceptor,
150 local_datagram_socket::implementation,
151 corosio::local_endpoint>
152 {
153 using base_type = reactor_dgram_socket_impl<
154 epoll_local_datagram_socket,
155 epoll_traits,
156 epoll_local_datagram_service,
157 epoll_tcp_acceptor,
158 local_datagram_socket::implementation,
159 corosio::local_endpoint>;
160 friend epoll_local_datagram_service;
161
162 public:
163 140x explicit epoll_local_datagram_socket(
164 epoll_local_datagram_service& svc) noexcept
165 140x : base_type(svc)
166 {
167 140x }
168
169 4x std::error_code shutdown(corosio::shutdown_type what) noexcept override
170 {
171 4x return this->do_shutdown(static_cast<int>(what));
172 }
173
174 std::error_code bind(corosio::local_endpoint ep) noexcept override
175 {
176 return this->do_bind(ep);
177 }
178
179 2x native_handle_type release_socket() noexcept override
180 {
181 2x return this->do_release_socket();
182 }
183 };
184
185 // --- Acceptors ---
186
187 class epoll_tcp_acceptor final
188 : public reactor_acceptor_impl<
189 epoll_tcp_acceptor,
190 epoll_traits,
191 epoll_tcp_acceptor_service,
192 epoll_tcp_socket,
193 tcp_acceptor::implementation,
194 endpoint>
195 {
196 using base_type = reactor_acceptor_impl<
197 epoll_tcp_acceptor,
198 epoll_traits,
199 epoll_tcp_acceptor_service,
200 epoll_tcp_socket,
201 tcp_acceptor::implementation,
202 endpoint>;
203 friend epoll_tcp_acceptor_service;
204
205 public:
206 360x explicit epoll_tcp_acceptor(epoll_tcp_acceptor_service& svc) noexcept
207 360x : base_type(svc)
208 {
209 360x }
210 };
211
212 class epoll_local_stream_acceptor final
213 : public reactor_acceptor_impl<
214 epoll_local_stream_acceptor,
215 epoll_traits,
216 epoll_local_stream_acceptor_service,
217 epoll_local_stream_socket,
218 local_stream_acceptor::implementation,
219 corosio::local_endpoint>
220 {
221 using base_type = reactor_acceptor_impl<
222 epoll_local_stream_acceptor,
223 epoll_traits,
224 epoll_local_stream_acceptor_service,
225 epoll_local_stream_socket,
226 local_stream_acceptor::implementation,
227 corosio::local_endpoint>;
228 friend epoll_local_stream_acceptor_service;
229
230 public:
231 57x explicit epoll_local_stream_acceptor(
232 epoll_local_stream_acceptor_service& svc) noexcept
233 57x : base_type(svc)
234 {
235 57x }
236 };
237
238 // --- Services ---
239
240 class BOOST_COROSIO_DECL epoll_tcp_service final
241 : public reactor_tcp_service_impl<
242 epoll_tcp_service,
243 epoll_traits,
244 epoll_tcp_socket>
245 {
246 using base_type = reactor_tcp_service_impl<
247 epoll_tcp_service,
248 epoll_traits,
249 epoll_tcp_socket>;
250
251 public:
252 1227x explicit epoll_tcp_service(capy::execution_context& ctx) : base_type(ctx) {}
253 };
254
255 class BOOST_COROSIO_DECL epoll_local_stream_service final
256 : public reactor_local_stream_service_impl<
257 epoll_local_stream_service,
258 epoll_traits,
259 epoll_local_stream_socket>
260 {
261 using base_type = reactor_local_stream_service_impl<
262 epoll_local_stream_service,
263 epoll_traits,
264 epoll_local_stream_socket>;
265
266 public:
267 1227x explicit epoll_local_stream_service(capy::execution_context& ctx)
268 1227x : base_type(ctx)
269 {
270 1227x }
271 };
272
273 class BOOST_COROSIO_DECL epoll_udp_service final
274 : public reactor_udp_service_impl<
275 epoll_udp_service,
276 epoll_traits,
277 epoll_udp_socket>
278 {
279 using base_type = reactor_udp_service_impl<
280 epoll_udp_service,
281 epoll_traits,
282 epoll_udp_socket>;
283
284 public:
285 1227x explicit epoll_udp_service(capy::execution_context& ctx) : base_type(ctx) {}
286 };
287
288 class BOOST_COROSIO_DECL epoll_local_datagram_service final
289 : public reactor_local_dgram_service_impl<
290 epoll_local_datagram_service,
291 epoll_traits,
292 epoll_local_datagram_socket>
293 {
294 using base_type = reactor_local_dgram_service_impl<
295 epoll_local_datagram_service,
296 epoll_traits,
297 epoll_local_datagram_socket>;
298
299 public:
300 1227x explicit epoll_local_datagram_service(capy::execution_context& ctx)
301 1227x : base_type(ctx)
302 {
303 1227x }
304 };
305
306 class BOOST_COROSIO_DECL epoll_tcp_acceptor_service final
307 : public reactor_acceptor_service_impl<
308 epoll_tcp_acceptor_service,
309 epoll_traits,
310 tcp_acceptor_service,
311 epoll_tcp_acceptor,
312 epoll_tcp_service,
313 endpoint>
314 {
315 using base_type = reactor_acceptor_service_impl<
316 epoll_tcp_acceptor_service,
317 epoll_traits,
318 tcp_acceptor_service,
319 epoll_tcp_acceptor,
320 epoll_tcp_service,
321 endpoint>;
322
323 public:
324 1227x explicit epoll_tcp_acceptor_service(capy::execution_context& ctx)
325 1227x : base_type(ctx)
326 {
327 1227x }
328 };
329
330 class BOOST_COROSIO_DECL epoll_local_stream_acceptor_service final
331 : public reactor_acceptor_service_impl<
332 epoll_local_stream_acceptor_service,
333 epoll_traits,
334 local_stream_acceptor_service,
335 epoll_local_stream_acceptor,
336 epoll_local_stream_service,
337 corosio::local_endpoint>
338 {
339 using base_type = reactor_acceptor_service_impl<
340 epoll_local_stream_acceptor_service,
341 epoll_traits,
342 local_stream_acceptor_service,
343 epoll_local_stream_acceptor,
344 epoll_local_stream_service,
345 corosio::local_endpoint>;
346
347 public:
348 1227x explicit epoll_local_stream_acceptor_service(capy::execution_context& ctx)
349 1227x : base_type(ctx)
350 {
351 1227x }
352 };
353
354 } // namespace boost::corosio::detail
355
356 #endif // BOOST_COROSIO_HAS_EPOLL
357
358 #endif // BOOST_COROSIO_NATIVE_DETAIL_EPOLL_EPOLL_TYPES_HPP
359