LCOV - code coverage report
Current view: top level - corosio - wait_traits.hpp (source / functions) Coverage Total Hit
Test: coverage_remapped.info Lines: 100.0 % 2 2
Test Date: 2026-09-28 20:06:38 Functions: 100.0 % 3 3

           TLA  Line data    Source code
       1                 : //
       2                 : // Copyright (c) 2026 Steve Gerbino
       3                 : // Copyright (c) 2026 Michael Vandeberg
       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_WAIT_TRAITS_HPP
      12                 : #define BOOST_COROSIO_WAIT_TRAITS_HPP
      13                 : 
      14                 : #include <boost/corosio/detail/config.hpp>
      15                 : 
      16                 : #include <concepts>
      17                 : 
      18                 : namespace boost::corosio {
      19                 : 
      20                 : /** Controls how much of the remaining time a single underlying
      21                 :     steady-clock wait may cover before `Clock::now()` is re-read.
      22                 :     A larger value costs fewer wakeups; a smaller value bounds how
      23                 :     late an adjustment of `Clock` ( e.g. a stepped time-of-day
      24                 :     clock ) is observed. The default covers the full remaining
      25                 :     duration, which is exact for clocks that advance in lockstep
      26                 :     with the machine's monotonic clock.
      27                 : 
      28                 :     @par Example
      29                 :     @par !example capped_traits
      30                 : 
      31                 :     @tparam Clock The clock type whose durations are converted.
      32                 : 
      33                 :     @see delay
      34                 : */
      35                 : template<class Clock>
      36                 : struct wait_traits
      37                 : {
      38                 :     /** Convert a remaining duration into a wait duration.
      39                 : 
      40                 :         Should return a positive duration when @p d is positive; a
      41                 :         non-positive result degrades to reactor-rate re-checking.
      42                 : 
      43                 :         @pre Must not throw and must not block — invoked on the
      44                 :             `io_context`'s run thread, including from the timer
      45                 :             completion path.
      46                 : 
      47                 :         @param d The remaining time until the deadline.
      48                 : 
      49                 :         @return The duration the next underlying wait may cover.
      50                 :     */
      51 HIT           5 :     static typename Clock::duration to_wait_duration(typename Clock::duration d)
      52                 :     {
      53               5 :         return d;
      54                 :     }
      55                 : };
      56                 : 
      57                 : /** Concept for wait-traits policies usable with `Clock`.
      58                 : 
      59                 :     Satisfied when `Traits::to_wait_duration` accepts a
      60                 :     `Clock::duration` and returns something convertible back to it.
      61                 :     `Traits::to_wait_duration` is expected not to throw; the
      62                 :     requires-expression above does not enforce this.
      63                 : */
      64                 : template<class Traits, class Clock>
      65                 : concept WaitTraits = requires(typename Clock::duration d) {
      66                 :     {
      67                 :         Traits::to_wait_duration(d)
      68                 :     } -> std::convertible_to<typename Clock::duration>;
      69                 : };
      70                 : 
      71                 : } // namespace boost::corosio
      72                 : 
      73                 : #endif
        

Generated by: LCOV version 2.3