Execution Deadlines

Header: fiction/utils/execution_timeout.hpp

class timeout_error : public std::runtime_error

An algorithm reached its execution deadline without producing a complete result.

Public Functions

inline timeout_error()

Constructs an execution-timeout error.

inline std::chrono::steady_clock::time_point fiction::utils::make_deadline(const uint64_t timeout, const std::chrono::steady_clock::time_point enclosing = std::chrono::steady_clock::time_point::max())

Starts a millisecond budget without extending an enclosing deadline.

Parameters:
  • timeout – Milliseconds from now; the maximum value means unlimited.

  • enclosing – Deadline shared with an enclosing algorithm.

Returns:

The earlier deadline, saturated at the clock’s maximum time point.

inline void fiction::utils::check_deadline(const std::chrono::steady_clock::time_point deadline)

Checks a shared monotonic deadline.

Parameters:

deadline – Expiration time; the maximum time point means unlimited.

Throws:

timeout_error – if the deadline has been reached.