40 : period_(rclcpp::Duration::from_nanoseconds(std::clamp<int64_t>(period.count(), 0, max_period_ns_))),
41 jitter_tolerance_(rclcpp::Duration::from_nanoseconds(period_.nanoseconds() / 4)),
42 max_catch_up_(rclcpp::Duration::from_nanoseconds(period_.nanoseconds() / 2)),
43 clock_jump_threshold_(rclcpp::Duration::from_nanoseconds((3 * period_.nanoseconds()) / 2))
58 if (period_.nanoseconds() <= 0)
64 if (!next_deadline_ || now < *next_deadline_ - clock_jump_threshold_)
69 if (now < *next_deadline_ - jitter_tolerance_)
74 next_deadline_ = std::max(*next_deadline_ + period_, now + max_catch_up_);