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

77.1% Lines (27/35) 76.5% List of functions (13/17)
epoll_types.hpp
f(x) Functions (17)
Function Calls Lines Blocks
boost::corosio::detail::epoll_tcp_socket::epoll_tcp_socket(boost::corosio::detail::epoll_tcp_service&) :57 8180x 100.0% 100.0% boost::corosio::detail::epoll_local_stream_socket::epoll_local_stream_socket(boost::corosio::detail::epoll_local_stream_service&) :73 17x 100.0% 100.0% boost::corosio::detail::epoll_local_stream_socket::release_socket() :76 1x 100.0% 100.0% boost::corosio::detail::epoll_udp_socket::epoll_udp_socket(boost::corosio::detail::epoll_udp_service&) :95 43x 100.0% 100.0% boost::corosio::detail::epoll_local_datagram_socket::epoll_local_datagram_socket(boost::corosio::detail::epoll_local_datagram_service&) :111 17x 100.0% 100.0% boost::corosio::detail::epoll_local_datagram_socket::shutdown(boost::corosio::shutdown_type) :114 0 0.0% 0.0% boost::corosio::detail::epoll_local_datagram_socket::bind(boost::corosio::local_endpoint) :119 0 0.0% 0.0% boost::corosio::detail::epoll_local_datagram_socket::release_socket() :124 0 0.0% 0.0% boost::corosio::detail::epoll_tcp_acceptor::epoll_tcp_acceptor(boost::corosio::detail::epoll_tcp_acceptor_service&) :144 96x 100.0% 100.0% boost::corosio::detail::epoll_local_stream_acceptor::epoll_local_stream_acceptor(boost::corosio::detail::epoll_local_stream_acceptor_service&) :162 6x 100.0% 100.0% boost::corosio::detail::epoll_local_stream_acceptor::release_socket() :166 0 0.0% 0.0% boost::corosio::detail::epoll_tcp_service::epoll_tcp_service(boost::capy::execution_context&) :181 366x 100.0% 100.0% boost::corosio::detail::epoll_local_stream_service::epoll_local_stream_service(boost::capy::execution_context&) :194 366x 100.0% 100.0% boost::corosio::detail::epoll_udp_service::epoll_udp_service(boost::capy::execution_context&) :205 366x 100.0% 100.0% boost::corosio::detail::epoll_local_datagram_service::epoll_local_datagram_service(boost::capy::execution_context&) :218 366x 100.0% 100.0% boost::corosio::detail::epoll_tcp_acceptor_service::epoll_tcp_acceptor_service(boost::capy::execution_context&) :233 366x 100.0% 100.0% boost::corosio::detail::epoll_local_stream_acceptor_service::epoll_local_stream_acceptor_service(boost::capy::execution_context&) :250 366x 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 8180x explicit epoll_tcp_socket(epoll_tcp_service& svc) noexcept
58 8180x : base_type(svc) {}
59 };
60
61 class epoll_local_stream_socket final
62 : public reactor_stream_socket_impl<
63 epoll_local_stream_socket, epoll_traits,
64 epoll_local_stream_service, epoll_local_stream_acceptor,
65 local_stream_socket::implementation, corosio::local_endpoint>
66 {
67 using base_type = reactor_stream_socket_impl<
68 epoll_local_stream_socket, epoll_traits,
69 epoll_local_stream_service, epoll_local_stream_acceptor,
70 local_stream_socket::implementation, corosio::local_endpoint>;
71 friend epoll_local_stream_service;
72 public:
73 17x explicit epoll_local_stream_socket(epoll_local_stream_service& svc) noexcept
74 17x : base_type(svc) {}
75
76 1x native_handle_type release_socket() noexcept override
77 {
78 1x hook_ = {};
79 1x return this->do_release_socket();
80 }
81 };
82
83 // --- Datagram sockets ---
84
85 class epoll_udp_socket final
86 : public reactor_dgram_socket_impl<
87 epoll_udp_socket, epoll_traits, epoll_udp_service,
88 epoll_tcp_acceptor, udp_socket::implementation, endpoint>
89 {
90 using base_type = reactor_dgram_socket_impl<
91 epoll_udp_socket, epoll_traits, epoll_udp_service,
92 epoll_tcp_acceptor, udp_socket::implementation, endpoint>;
93 friend epoll_udp_service;
94 public:
95 43x explicit epoll_udp_socket(epoll_udp_service& svc) noexcept
96 43x : base_type(svc) {}
97 };
98
99 class epoll_local_datagram_socket final
100 : public reactor_dgram_socket_impl<
101 epoll_local_datagram_socket, epoll_traits,
102 epoll_local_datagram_service, epoll_tcp_acceptor,
103 local_datagram_socket::implementation, corosio::local_endpoint>
104 {
105 using base_type = reactor_dgram_socket_impl<
106 epoll_local_datagram_socket, epoll_traits,
107 epoll_local_datagram_service, epoll_tcp_acceptor,
108 local_datagram_socket::implementation, corosio::local_endpoint>;
109 friend epoll_local_datagram_service;
110 public:
111 17x explicit epoll_local_datagram_socket(epoll_local_datagram_service& svc) noexcept
112 17x : base_type(svc) {}
113
114 std::error_code shutdown(corosio::shutdown_type what) noexcept override
115 {
116 return this->do_shutdown(static_cast<int>(what));
117 }
118
119 std::error_code bind(corosio::local_endpoint ep) noexcept override
120 {
121 return this->do_bind(ep);
122 }
123
124 native_handle_type release_socket() noexcept override
125 {
126 return this->do_release_socket();
127 }
128 };
129
130 // --- Acceptors ---
131
132 class epoll_tcp_acceptor final
133 : public reactor_acceptor_impl<
134 epoll_tcp_acceptor, epoll_traits,
135 epoll_tcp_acceptor_service, epoll_tcp_socket,
136 tcp_acceptor::implementation, endpoint>
137 {
138 using base_type = reactor_acceptor_impl<
139 epoll_tcp_acceptor, epoll_traits,
140 epoll_tcp_acceptor_service, epoll_tcp_socket,
141 tcp_acceptor::implementation, endpoint>;
142 friend epoll_tcp_acceptor_service;
143 public:
144 96x explicit epoll_tcp_acceptor(epoll_tcp_acceptor_service& svc) noexcept
145 96x : base_type(svc) {}
146 };
147
148 class epoll_local_stream_acceptor final
149 : public reactor_acceptor_impl<
150 epoll_local_stream_acceptor, epoll_traits,
151 epoll_local_stream_acceptor_service,
152 epoll_local_stream_socket,
153 local_stream_acceptor::implementation, corosio::local_endpoint>
154 {
155 using base_type = reactor_acceptor_impl<
156 epoll_local_stream_acceptor, epoll_traits,
157 epoll_local_stream_acceptor_service,
158 epoll_local_stream_socket,
159 local_stream_acceptor::implementation, corosio::local_endpoint>;
160 friend epoll_local_stream_acceptor_service;
161 public:
162 6x explicit epoll_local_stream_acceptor(
163 epoll_local_stream_acceptor_service& svc) noexcept
164 6x : base_type(svc) {}
165
166 native_handle_type release_socket() noexcept override
167 {
168 return this->do_release_socket();
169 }
170 };
171
172 // --- Services ---
173
174 class BOOST_COROSIO_DECL epoll_tcp_service final
175 : public reactor_tcp_service_impl<
176 epoll_tcp_service, epoll_traits, epoll_tcp_socket>
177 {
178 using base_type = reactor_tcp_service_impl<
179 epoll_tcp_service, epoll_traits, epoll_tcp_socket>;
180 public:
181 366x explicit epoll_tcp_service(capy::execution_context& ctx)
182 366x : base_type(ctx) {}
183 };
184
185 class BOOST_COROSIO_DECL epoll_local_stream_service final
186 : public reactor_local_stream_service_impl<
187 epoll_local_stream_service, epoll_traits,
188 epoll_local_stream_socket>
189 {
190 using base_type = reactor_local_stream_service_impl<
191 epoll_local_stream_service, epoll_traits,
192 epoll_local_stream_socket>;
193 public:
194 366x explicit epoll_local_stream_service(capy::execution_context& ctx)
195 366x : base_type(ctx) {}
196 };
197
198 class BOOST_COROSIO_DECL epoll_udp_service final
199 : public reactor_udp_service_impl<
200 epoll_udp_service, epoll_traits, epoll_udp_socket>
201 {
202 using base_type = reactor_udp_service_impl<
203 epoll_udp_service, epoll_traits, epoll_udp_socket>;
204 public:
205 366x explicit epoll_udp_service(capy::execution_context& ctx)
206 366x : base_type(ctx) {}
207 };
208
209 class BOOST_COROSIO_DECL epoll_local_datagram_service final
210 : public reactor_local_dgram_service_impl<
211 epoll_local_datagram_service, epoll_traits,
212 epoll_local_datagram_socket>
213 {
214 using base_type = reactor_local_dgram_service_impl<
215 epoll_local_datagram_service, epoll_traits,
216 epoll_local_datagram_socket>;
217 public:
218 366x explicit epoll_local_datagram_service(capy::execution_context& ctx)
219 366x : base_type(ctx) {}
220 };
221
222 class BOOST_COROSIO_DECL epoll_tcp_acceptor_service final
223 : public reactor_acceptor_service_impl<
224 epoll_tcp_acceptor_service, epoll_traits,
225 tcp_acceptor_service, epoll_tcp_acceptor,
226 epoll_tcp_service, endpoint>
227 {
228 using base_type = reactor_acceptor_service_impl<
229 epoll_tcp_acceptor_service, epoll_traits,
230 tcp_acceptor_service, epoll_tcp_acceptor,
231 epoll_tcp_service, endpoint>;
232 public:
233 366x explicit epoll_tcp_acceptor_service(capy::execution_context& ctx)
234 366x : base_type(ctx) {}
235 };
236
237 class BOOST_COROSIO_DECL epoll_local_stream_acceptor_service final
238 : public reactor_acceptor_service_impl<
239 epoll_local_stream_acceptor_service, epoll_traits,
240 local_stream_acceptor_service,
241 epoll_local_stream_acceptor,
242 epoll_local_stream_service, corosio::local_endpoint>
243 {
244 using base_type = reactor_acceptor_service_impl<
245 epoll_local_stream_acceptor_service, epoll_traits,
246 local_stream_acceptor_service,
247 epoll_local_stream_acceptor,
248 epoll_local_stream_service, corosio::local_endpoint>;
249 public:
250 366x explicit epoll_local_stream_acceptor_service(capy::execution_context& ctx)
251 366x : base_type(ctx) {}
252 };
253
254 } // namespace boost::corosio::detail
255
256 #endif // BOOST_COROSIO_HAS_EPOLL
257
258 #endif // BOOST_COROSIO_NATIVE_DETAIL_EPOLL_EPOLL_TYPES_HPP
259