34 template<
typename Duration,
typename TickPeriod>
41 if (duration <= Duration::zero()) {
47 const auto elapsed_ticks = whole + (remainder.count() == 0 ? 0 : 1);
48 constexpr
auto max_ticks =
static_cast<decltype(elapsed_ticks)
>(
49 std::numeric_limits<tsm::tick_rep>::max());
50 if (elapsed_ticks >= max_ticks) {
51 return std::numeric_limits<tsm::tick_rep>::max();
61 template<
typename TickPeriod>
72 template<
typename Duration>
74 Duration duration)
const noexcept
79 [[nodiscard]] constexpr TickPeriod
period() const noexcept
103 template<
typename TickPeriod,
typename Duration>
110 template<
typename TickPeriod,
typename Duration>
117 template<
typename TickPeriod,
typename Duration>
124 template<
typename TickPeriod,
typename Duration>
135 template<
typename Clock,
typename TickPeriod>
145 , origin_(Clock::now())
162 const auto now = Clock::now();
165 last_ += period_ * elapsed;
172 origin_ = Clock::now();
Definition: chrono_ticks.h:137
TickPeriod tick_period
Definition: chrono_ticks.h:140
tsm::tick_rep poll()
Definition: chrono_ticks.h:160
typename Clock::time_point time_point
Definition: chrono_ticks.h:141
tsm::tick_rep ticks() const
Definition: chrono_ticks.h:155
void reset()
Definition: chrono_ticks.h:170
elapsed_tick_source(TickPeriod period)
Definition: chrono_ticks.h:143
elapsed_tick_source(tick_domain< TickPeriod > domain)
Definition: chrono_ticks.h:150
Clock clock_type
Definition: chrono_ticks.h:139
Definition: chrono_ticks.h:63
constexpr tick_domain(TickPeriod period=TickPeriod{ 1 })
Definition: chrono_ticks.h:67
TickPeriod tick_period
Definition: chrono_ticks.h:65
constexpr TickPeriod period() const noexcept
Definition: chrono_ticks.h:79
constexpr tsm::tick_count to_ticks(Duration duration) const noexcept
Definition: chrono_ticks.h:73
Definition: coroutine.h:656
Static coroutine tasks for tsm runtime executors.
Definition: chrono_ticks.h:23
constexpr millisecond_domain one_tick_per_millisecond() noexcept
Definition: chrono_ticks.h:92
tsm::periodic_ticks every(tick_domain< TickPeriod > domain, Duration duration) noexcept
Definition: chrono_ticks.h:126
tsm::sleep_ticks_awaitable sleep_for(tick_domain< TickPeriod > domain, Duration duration) noexcept
Definition: chrono_ticks.h:105
constexpr second_domain one_tick_per_second() noexcept
Definition: chrono_ticks.h:98
tsm::sleep_ticks_awaitable after(tick_domain< TickPeriod > domain, Duration duration) noexcept
Definition: chrono_ticks.h:112
tick_domain< std::chrono::seconds > second_domain
Definition: chrono_ticks.h:89
constexpr tsm::tick_rep duration_to_ticks(Duration duration, TickPeriod tick_period)
Definition: chrono_ticks.h:36
tsm::timeout_ticks_awaitable timeout(tick_domain< TickPeriod > domain, Duration duration) noexcept
Definition: chrono_ticks.h:119
constexpr tick_count ticks(tick_rep value) noexcept
Definition: ticks.h:85
sleep_ticks_awaitable sleep_ticks(tsm::tick_rep ticks) noexcept
Definition: coroutine.h:622
timeout_ticks_awaitable timeout_ticks(tsm::tick_rep ticks) noexcept
Definition: coroutine.h:710
TSM_TICK_PERIOD tick_period
Definition: ticks.h:42
TSM_TICK_REP tick_rep
Definition: ticks.h:35
Definition: coroutine.h:603
Strong value type for semantic scheduler ticks.
Definition: ticks.h:54
Definition: coroutine.h:691
Target-neutral tick value type.