include/boost/corosio/native/detail/kqueue/kqueue_types.hpp

96.7% Lines (58/60) 96.8% List of functions (30/31) -% Branches (0/0)
kqueue_types.hpp
f(x) Functions (31)
Function Calls Lines Blocks
boost::corosio::detail::kqueue_tcp_socket::~kqueue_tcp_socket() :47 28712x 100.0% 100.0% boost::corosio::detail::kqueue_tcp_socket::kqueue_tcp_socket(boost::corosio::detail::kqueue_tcp_service&) :66 28712x 100.0% 100.0% boost::corosio::detail::kqueue_tcp_socket::release_socket() :71 2x 100.0% 100.0% boost::corosio::detail::kqueue_local_stream_socket::~kqueue_local_stream_socket() :78 314x 100.0% 100.0% boost::corosio::detail::kqueue_local_stream_socket::kqueue_local_stream_socket(boost::corosio::detail::kqueue_local_stream_service&) :97 314x 100.0% 100.0% boost::corosio::detail::kqueue_local_stream_socket::release_socket() :103 2x 100.0% 100.0% boost::corosio::detail::kqueue_udp_socket::~kqueue_udp_socket() :112 320x 100.0% 100.0% boost::corosio::detail::kqueue_udp_socket::kqueue_udp_socket(boost::corosio::detail::kqueue_udp_service&) :131 320x 100.0% 100.0% boost::corosio::detail::kqueue_udp_socket::shutdown(boost::corosio::shutdown_type) :136 3x 100.0% 100.0% boost::corosio::detail::kqueue_udp_socket::release_socket() :141 2x 100.0% 100.0% boost::corosio::detail::kqueue_local_datagram_socket::~kqueue_local_datagram_socket() :147 248x 100.0% 100.0% boost::corosio::detail::kqueue_local_datagram_socket::kqueue_local_datagram_socket(boost::corosio::detail::kqueue_local_datagram_service&) :166 248x 100.0% 100.0% boost::corosio::detail::kqueue_local_datagram_socket::shutdown(boost::corosio::shutdown_type) :172 4x 100.0% 100.0% boost::corosio::detail::kqueue_local_datagram_socket::bind(boost::corosio::local_endpoint) :177 0 0.0% 0.0% boost::corosio::detail::kqueue_local_datagram_socket::release_socket() :182 2x 100.0% 100.0% boost::corosio::detail::kqueue_tcp_acceptor::~kqueue_tcp_acceptor() :190 2772x 100.0% 100.0% boost::corosio::detail::kqueue_tcp_acceptor::kqueue_tcp_acceptor(boost::corosio::detail::kqueue_tcp_acceptor_service&) :209 2772x 100.0% 100.0% boost::corosio::detail::kqueue_local_stream_acceptor::~kqueue_local_stream_acceptor() :215 106x 100.0% 100.0% boost::corosio::detail::kqueue_local_stream_acceptor::kqueue_local_stream_acceptor(boost::corosio::detail::kqueue_local_stream_acceptor_service&) :234 106x 100.0% 100.0% boost::corosio::detail::kqueue_tcp_service::~kqueue_tcp_service() :243 4386x 100.0% 100.0% boost::corosio::detail::kqueue_tcp_service::kqueue_tcp_service(boost::capy::execution_context&) :255 2924x 100.0% 100.0% boost::corosio::detail::kqueue_local_stream_service::~kqueue_local_stream_service() :260 4386x 100.0% 100.0% boost::corosio::detail::kqueue_local_stream_service::kqueue_local_stream_service(boost::capy::execution_context&) :272 2924x 100.0% 100.0% boost::corosio::detail::kqueue_udp_service::~kqueue_udp_service() :278 4386x 100.0% 100.0% boost::corosio::detail::kqueue_udp_service::kqueue_udp_service(boost::capy::execution_context&) :290 2924x 100.0% 100.0% boost::corosio::detail::kqueue_local_datagram_service::~kqueue_local_datagram_service() :295 4386x 100.0% 100.0% boost::corosio::detail::kqueue_local_datagram_service::kqueue_local_datagram_service(boost::capy::execution_context&) :307 2924x 100.0% 100.0% boost::corosio::detail::kqueue_tcp_acceptor_service::~kqueue_tcp_acceptor_service() :313 4386x 100.0% 100.0% boost::corosio::detail::kqueue_tcp_acceptor_service::kqueue_tcp_acceptor_service(boost::capy::execution_context&) :331 2924x 100.0% 100.0% boost::corosio::detail::kqueue_local_stream_acceptor_service::~kqueue_local_stream_acceptor_service() :337 4386x 100.0% 100.0% boost::corosio::detail::kqueue_local_stream_acceptor_service::kqueue_local_stream_acceptor_service(boost::capy::execution_context&) :355 2924x 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_KQUEUE_KQUEUE_TYPES_HPP
11 #define BOOST_COROSIO_NATIVE_DETAIL_KQUEUE_KQUEUE_TYPES_HPP
12
13 #include <boost/corosio/detail/platform.hpp>
14
15 #if BOOST_COROSIO_HAS_KQUEUE
16
17 /* Named per-backend types for the kqueue 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/kqueue/kqueue_traits.hpp>
26 #include <boost/corosio/native/detail/kqueue/kqueue_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 kqueue_tcp_socket;
33 class kqueue_tcp_service;
34 class kqueue_tcp_acceptor;
35 class kqueue_tcp_acceptor_service;
36 class kqueue_udp_socket;
37 class kqueue_udp_service;
38 class kqueue_local_stream_socket;
39 class kqueue_local_stream_service;
40 class kqueue_local_stream_acceptor;
41 class kqueue_local_stream_acceptor_service;
42 class kqueue_local_datagram_socket;
43 class kqueue_local_datagram_service;
44
45 // --- Stream sockets ---
46
47 class kqueue_tcp_socket final
48 : public reactor_stream_socket_impl<
49 kqueue_tcp_socket,
50 kqueue_traits,
51 kqueue_tcp_service,
52 kqueue_tcp_acceptor,
53 tcp_socket::implementation,
54 endpoint>
55 {
56 using base_type = reactor_stream_socket_impl<
57 kqueue_tcp_socket,
58 kqueue_traits,
59 kqueue_tcp_service,
60 kqueue_tcp_acceptor,
61 tcp_socket::implementation,
62 endpoint>;
63 friend kqueue_tcp_service;
64
65 public:
66 28712x explicit kqueue_tcp_socket(kqueue_tcp_service& svc) noexcept
67 14356x : base_type(svc)
68 28712x {
69 28712x }
70
71 2x native_handle_type release_socket() noexcept override
72 {
73 hook_ = {};
74 2x return this->do_release_socket();
75 }
76 };
77
78 class kqueue_local_stream_socket final
79 : public reactor_stream_socket_impl<
80 kqueue_local_stream_socket,
81 kqueue_traits,
82 kqueue_local_stream_service,
83 kqueue_local_stream_acceptor,
84 local_stream_socket::implementation,
85 corosio::local_endpoint>
86 {
87 using base_type = reactor_stream_socket_impl<
88 kqueue_local_stream_socket,
89 kqueue_traits,
90 kqueue_local_stream_service,
91 kqueue_local_stream_acceptor,
92 local_stream_socket::implementation,
93 corosio::local_endpoint>;
94 friend kqueue_local_stream_service;
95
96 public:
97 314x explicit kqueue_local_stream_socket(
98 kqueue_local_stream_service& svc) noexcept
99 157x : base_type(svc)
100 314x {
101 314x }
102
103 2x native_handle_type release_socket() noexcept override
104 {
105 hook_ = {};
106 2x return this->do_release_socket();
107 }
108 };
109
110 // --- Datagram sockets ---
111
112 class kqueue_udp_socket final
113 : public reactor_dgram_socket_impl<
114 kqueue_udp_socket,
115 kqueue_traits,
116 kqueue_udp_service,
117 kqueue_tcp_acceptor,
118 udp_socket::implementation,
119 endpoint>
120 {
121 using base_type = reactor_dgram_socket_impl<
122 kqueue_udp_socket,
123 kqueue_traits,
124 kqueue_udp_service,
125 kqueue_tcp_acceptor,
126 udp_socket::implementation,
127 endpoint>;
128 friend kqueue_udp_service;
129
130 public:
131 320x explicit kqueue_udp_socket(kqueue_udp_service& svc) noexcept
132 160x : base_type(svc)
133 320x {
134 320x }
135
136 3x std::error_code shutdown(corosio::shutdown_type what) noexcept override
137 {
138 3x return this->do_shutdown(static_cast<int>(what));
139 }
140
141 2x native_handle_type release_socket() noexcept override
142 {
143 2x return this->do_release_socket();
144 }
145 };
146
147 class kqueue_local_datagram_socket final
148 : public reactor_dgram_socket_impl<
149 kqueue_local_datagram_socket,
150 kqueue_traits,
151 kqueue_local_datagram_service,
152 kqueue_tcp_acceptor,
153 local_datagram_socket::implementation,
154 corosio::local_endpoint>
155 {
156 using base_type = reactor_dgram_socket_impl<
157 kqueue_local_datagram_socket,
158 kqueue_traits,
159 kqueue_local_datagram_service,
160 kqueue_tcp_acceptor,
161 local_datagram_socket::implementation,
162 corosio::local_endpoint>;
163 friend kqueue_local_datagram_service;
164
165 public:
166 248x explicit kqueue_local_datagram_socket(
167 kqueue_local_datagram_service& svc) noexcept
168 124x : base_type(svc)
169 248x {
170 248x }
171
172 4x std::error_code shutdown(corosio::shutdown_type what) noexcept override
173 {
174 4x return this->do_shutdown(static_cast<int>(what));
175 }
176
177 std::error_code bind(corosio::local_endpoint ep) noexcept override
178 {
179 return this->do_bind(ep);
180 }
181
182 2x native_handle_type release_socket() noexcept override
183 {
184 2x return this->do_release_socket();
185 }
186 };
187
188 // --- Acceptors ---
189
190 class kqueue_tcp_acceptor final
191 : public reactor_acceptor_impl<
192 kqueue_tcp_acceptor,
193 kqueue_traits,
194 kqueue_tcp_acceptor_service,
195 kqueue_tcp_socket,
196 tcp_acceptor::implementation,
197 endpoint>
198 {
199 using base_type = reactor_acceptor_impl<
200 kqueue_tcp_acceptor,
201 kqueue_traits,
202 kqueue_tcp_acceptor_service,
203 kqueue_tcp_socket,
204 tcp_acceptor::implementation,
205 endpoint>;
206 friend kqueue_tcp_acceptor_service;
207
208 public:
209 2772x explicit kqueue_tcp_acceptor(kqueue_tcp_acceptor_service& svc) noexcept
210 1386x : base_type(svc)
211 2772x {
212 2772x }
213 };
214
215 class kqueue_local_stream_acceptor final
216 : public reactor_acceptor_impl<
217 kqueue_local_stream_acceptor,
218 kqueue_traits,
219 kqueue_local_stream_acceptor_service,
220 kqueue_local_stream_socket,
221 local_stream_acceptor::implementation,
222 corosio::local_endpoint>
223 {
224 using base_type = reactor_acceptor_impl<
225 kqueue_local_stream_acceptor,
226 kqueue_traits,
227 kqueue_local_stream_acceptor_service,
228 kqueue_local_stream_socket,
229 local_stream_acceptor::implementation,
230 corosio::local_endpoint>;
231 friend kqueue_local_stream_acceptor_service;
232
233 public:
234 106x explicit kqueue_local_stream_acceptor(
235 kqueue_local_stream_acceptor_service& svc) noexcept
236 53x : base_type(svc)
237 106x {
238 106x }
239 };
240
241 // --- Services ---
242
243 class BOOST_COROSIO_DECL kqueue_tcp_service final
244 : public reactor_tcp_service_impl<
245 kqueue_tcp_service,
246 kqueue_traits,
247 kqueue_tcp_socket>
248 {
249 using base_type = reactor_tcp_service_impl<
250 kqueue_tcp_service,
251 kqueue_traits,
252 kqueue_tcp_socket>;
253
254 public:
255 2924x explicit kqueue_tcp_service(capy::execution_context& ctx) : base_type(ctx)
256 2924x {
257 2924x }
258 };
259
260 class BOOST_COROSIO_DECL kqueue_local_stream_service final
261 : public reactor_local_stream_service_impl<
262 kqueue_local_stream_service,
263 kqueue_traits,
264 kqueue_local_stream_socket>
265 {
266 using base_type = reactor_local_stream_service_impl<
267 kqueue_local_stream_service,
268 kqueue_traits,
269 kqueue_local_stream_socket>;
270
271 public:
272 2924x explicit kqueue_local_stream_service(capy::execution_context& ctx)
273 1462x : base_type(ctx)
274 2924x {
275 2924x }
276 };
277
278 class BOOST_COROSIO_DECL kqueue_udp_service final
279 : public reactor_udp_service_impl<
280 kqueue_udp_service,
281 kqueue_traits,
282 kqueue_udp_socket>
283 {
284 using base_type = reactor_udp_service_impl<
285 kqueue_udp_service,
286 kqueue_traits,
287 kqueue_udp_socket>;
288
289 public:
290 2924x explicit kqueue_udp_service(capy::execution_context& ctx) : base_type(ctx)
291 2924x {
292 2924x }
293 };
294
295 class BOOST_COROSIO_DECL kqueue_local_datagram_service final
296 : public reactor_local_dgram_service_impl<
297 kqueue_local_datagram_service,
298 kqueue_traits,
299 kqueue_local_datagram_socket>
300 {
301 using base_type = reactor_local_dgram_service_impl<
302 kqueue_local_datagram_service,
303 kqueue_traits,
304 kqueue_local_datagram_socket>;
305
306 public:
307 2924x explicit kqueue_local_datagram_service(capy::execution_context& ctx)
308 1462x : base_type(ctx)
309 2924x {
310 2924x }
311 };
312
313 class BOOST_COROSIO_DECL kqueue_tcp_acceptor_service final
314 : public reactor_acceptor_service_impl<
315 kqueue_tcp_acceptor_service,
316 kqueue_traits,
317 tcp_acceptor_service,
318 kqueue_tcp_acceptor,
319 kqueue_tcp_service,
320 endpoint>
321 {
322 using base_type = reactor_acceptor_service_impl<
323 kqueue_tcp_acceptor_service,
324 kqueue_traits,
325 tcp_acceptor_service,
326 kqueue_tcp_acceptor,
327 kqueue_tcp_service,
328 endpoint>;
329
330 public:
331 2924x explicit kqueue_tcp_acceptor_service(capy::execution_context& ctx)
332 1462x : base_type(ctx)
333 2924x {
334 2924x }
335 };
336
337 class BOOST_COROSIO_DECL kqueue_local_stream_acceptor_service final
338 : public reactor_acceptor_service_impl<
339 kqueue_local_stream_acceptor_service,
340 kqueue_traits,
341 local_stream_acceptor_service,
342 kqueue_local_stream_acceptor,
343 kqueue_local_stream_service,
344 corosio::local_endpoint>
345 {
346 using base_type = reactor_acceptor_service_impl<
347 kqueue_local_stream_acceptor_service,
348 kqueue_traits,
349 local_stream_acceptor_service,
350 kqueue_local_stream_acceptor,
351 kqueue_local_stream_service,
352 corosio::local_endpoint>;
353
354 public:
355 2924x explicit kqueue_local_stream_acceptor_service(capy::execution_context& ctx)
356 1462x : base_type(ctx)
357 2924x {
358 2924x }
359 };
360
361 } // namespace boost::corosio::detail
362
363 #endif // BOOST_COROSIO_HAS_KQUEUE
364
365 #endif // BOOST_COROSIO_NATIVE_DETAIL_KQUEUE_KQUEUE_TYPES_HPP
366