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

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