Line data 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 : #include <boost/corosio/epoll_context.hpp>
11 :
12 : #if BOOST_COROSIO_HAS_EPOLL
13 :
14 : #include "src/detail/epoll/scheduler.hpp"
15 : #include "src/detail/epoll/sockets.hpp"
16 : #include "src/detail/epoll/acceptors.hpp"
17 :
18 : #include <thread>
19 :
20 : namespace boost::corosio {
21 :
22 188 : epoll_context::
23 188 : epoll_context()
24 188 : : epoll_context(std::thread::hardware_concurrency())
25 : {
26 188 : }
27 :
28 189 : epoll_context::
29 : epoll_context(
30 189 : unsigned concurrency_hint)
31 : {
32 378 : sched_ = &make_service<detail::epoll_scheduler>(
33 189 : static_cast<int>(concurrency_hint));
34 :
35 : // Install socket/acceptor services.
36 : // These use socket_service and acceptor_service as key_type,
37 : // enabling runtime polymorphism.
38 189 : make_service<detail::epoll_socket_service>();
39 189 : make_service<detail::epoll_acceptor_service>();
40 189 : }
41 :
42 189 : epoll_context::
43 : ~epoll_context()
44 : {
45 189 : shutdown();
46 189 : destroy();
47 189 : }
48 :
49 : } // namespace boost::corosio
50 :
51 : #endif // BOOST_COROSIO_HAS_EPOLL
|