TLA Line data 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 HIT 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
|