include/boost/corosio/native/detail/reactor/reactor_service_state.hpp

100.0% Lines (1/1) 100.0% List of functions (12/12) -% Branches (0/0)
f(x) Functions (12)
Function Calls Lines Blocks
boost::corosio::detail::reactor_service_state<boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_tcp_acceptor>::~reactor_service_state() :30 750x 100.0% 100.0% boost::corosio::detail::reactor_service_state<boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_tcp_socket>::~reactor_service_state() :30 750x 100.0% 100.0% boost::corosio::detail::reactor_service_state<boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_udp_socket>::~reactor_service_state() :30 750x 100.0% 100.0% boost::corosio::detail::reactor_service_state<boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_acceptor>::~reactor_service_state() :30 462x 100.0% 100.0% boost::corosio::detail::reactor_service_state<boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_socket>::~reactor_service_state() :30 462x 100.0% 100.0% boost::corosio::detail::reactor_service_state<boost::corosio::detail::select_scheduler, boost::corosio::detail::select_udp_socket>::~reactor_service_state() :30 462x 100.0% 100.0% boost::corosio::detail::reactor_service_state<boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_tcp_acceptor>::reactor_service_state(boost::corosio::detail::kqueue_scheduler&) :33 750x 100.0% 100.0% boost::corosio::detail::reactor_service_state<boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_tcp_socket>::reactor_service_state(boost::corosio::detail::kqueue_scheduler&) :33 750x 100.0% 100.0% boost::corosio::detail::reactor_service_state<boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_udp_socket>::reactor_service_state(boost::corosio::detail::kqueue_scheduler&) :33 750x 100.0% 100.0% boost::corosio::detail::reactor_service_state<boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_acceptor>::reactor_service_state(boost::corosio::detail::select_scheduler&) :33 462x 100.0% 100.0% boost::corosio::detail::reactor_service_state<boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_socket>::reactor_service_state(boost::corosio::detail::select_scheduler&) :33 462x 100.0% 100.0% boost::corosio::detail::reactor_service_state<boost::corosio::detail::select_scheduler, boost::corosio::detail::select_udp_socket>::reactor_service_state(boost::corosio::detail::select_scheduler&) :33 462x 100.0% 100.0%
Line TLA Hits Source Code
1 //
2 // Copyright (c) 2026 Steve Gerbino
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_REACTOR_REACTOR_SERVICE_STATE_HPP
11 #define BOOST_COROSIO_NATIVE_DETAIL_REACTOR_REACTOR_SERVICE_STATE_HPP
12
13 #include <boost/corosio/detail/intrusive.hpp>
14
15 #include <memory>
16 #include <mutex>
17 #include <unordered_map>
18
19 namespace boost::corosio::detail {
20
21 /** Shared service state for reactor backends.
22
23 Holds the scheduler reference, service mutex, and per-impl
24 ownership tracking. Used by both socket and acceptor services.
25
26 @tparam Scheduler The backend's scheduler type.
27 @tparam Impl The backend's socket or acceptor impl type.
28 */
29 template<class Scheduler, class Impl>
30 struct reactor_service_state
31 {
32 /// Construct with a reference to the owning scheduler.
33 3636x explicit reactor_service_state(Scheduler& sched) noexcept : sched_(sched) {}
34
35 /// Reference to the owning scheduler.
36 Scheduler& sched_;
37
38 /// Protects `impl_list_` and `impl_ptrs_`.
39 std::mutex mutex_;
40
41 /// All live impl objects for shutdown traversal.
42 intrusive_list<Impl> impl_list_;
43
44 /// Shared ownership of each impl, keyed by raw pointer.
45 std::unordered_map<Impl*, std::shared_ptr<Impl>> impl_ptrs_;
46 };
47
48 } // namespace boost::corosio::detail
49
50 #endif // BOOST_COROSIO_NATIVE_DETAIL_REACTOR_REACTOR_SERVICE_STATE_HPP
51