include/boost/corosio/detail/scheduler.hpp

100.0% Lines (1/1) 100.0% Functions (1/1)
include/boost/corosio/detail/scheduler.hpp
Line Hits Source Code
1 //
2 // Copyright (c) 2025 Vinnie Falco (vinnie.falco@gmail.com)
3 // Copyright (c) 2026 Steve Gerbino
4 //
5 // Distributed under the Boost Software License, Version 1.0. (See accompanying
6 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 //
8 // Official repository: https://github.com/cppalliance/corosio
9 //
10
11 #ifndef BOOST_COROSIO_DETAIL_SCHEDULER_HPP
12 #define BOOST_COROSIO_DETAIL_SCHEDULER_HPP
13
14 #include <boost/corosio/detail/config.hpp>
15 #include <coroutine>
16
17 #include <cstddef>
18
19 namespace boost::corosio::detail {
20
21 class scheduler_op;
22
23 struct scheduler
24 {
25 336 virtual ~scheduler() = default;
26 virtual void post(std::coroutine_handle<>) const = 0;
27 virtual void post(scheduler_op*) const = 0;
28
29 virtual void work_started() noexcept = 0;
30 virtual void work_finished() noexcept = 0;
31
32 virtual bool running_in_this_thread() const noexcept = 0;
33 virtual void stop() = 0;
34 virtual bool stopped() const noexcept = 0;
35 virtual void restart() = 0;
36 virtual std::size_t run() = 0;
37 virtual std::size_t run_one() = 0;
38 virtual std::size_t wait_one(long usec) = 0;
39 virtual std::size_t poll() = 0;
40 virtual std::size_t poll_one() = 0;
41 };
42
43 } // namespace boost::corosio::detail
44
45 #endif
46