4 #include <boost/fiber/scheduler.hpp> 13 UringFiberProps(::boost::fibers::context* ctx) : fiber_properties(ctx) {
16 void set_name(std::string nm) {
17 name_ = std::move(nm);
20 const std::string& name()
const {
28 class UringFiberAlgo :
public ::boost::fibers::algo::algorithm_with_properties<UringFiberProps> {
29 using ready_queue_type = ::boost::fibers::scheduler::ready_queue_type;
32 using FiberContext = ::boost::fibers::context;
33 using time_point = std::chrono::steady_clock::time_point;
38 void awakened(FiberContext* ctx,
UringFiberProps& props) noexcept
override;
40 FiberContext* pick_next() noexcept
override;
42 void property_change(FiberContext* ctx,
UringFiberProps& props) noexcept
final;
44 bool has_ready_fibers()
const noexcept
final;
48 void suspend_until(time_point
const& abs_time) noexcept
final;
53 void notify() noexcept
final;
56 ready_queue_type rqueue_;
58 FiberContext* main_cntx_;
60 uint32_t ready_cnt_ = 0;