C++ Mathematical Expression Toolkit (ExprTk) release
Loading...
Searching...
No Matches
timeout_rtc_handler Struct Referencefinal
Inheritance diagram for timeout_rtc_handler:
[legend]
Collaboration diagram for timeout_rtc_handler:
[legend]

Classes

class  timeout_exception

Public Types

using time_point_t = std::chrono::time_point<std::chrono::steady_clock>
Public Types inherited from exprtk::loop_runtime_check
enum  loop_types {
  e_invalid = 0 , e_for_loop = 1 , e_while_loop = 2 , e_repeat_until_loop = 4 ,
  e_all_loops = 7
}
enum  violation_type { e_unknown = 0 , e_iteration_count = 1 , e_timeout = 2 }

Public Member Functions

 timeout_rtc_handler ()
void set_timeout_time (const time_point_t &timeout_tp)
bool check () override
void handle_runtime_violation (const violation_context &) override
Public Member Functions inherited from exprtk::loop_runtime_check
 loop_runtime_check ()
virtual ~loop_runtime_check ()

Public Attributes

std::size_t iterations_ = 0
time_point_t timeout_tp_
Public Attributes inherited from exprtk::loop_runtime_check
loop_types loop_set
details::_uint64_t max_loop_iterations

Detailed Description

Definition at line 27 of file exprtk_loop_timeout_rtc.cpp.

Member Typedef Documentation

◆ time_point_t

using timeout_rtc_handler::time_point_t = std::chrono::time_point<std::chrono::steady_clock>

Definition at line 42 of file exprtk_loop_timeout_rtc.cpp.

Constructor & Destructor Documentation

◆ timeout_rtc_handler()

timeout_rtc_handler::timeout_rtc_handler ( )
inline

Definition at line 29 of file exprtk_loop_timeout_rtc.cpp.

30 : exprtk::loop_runtime_check()
31 {}

References exprtk::loop_runtime_check::loop_runtime_check().

Here is the call graph for this function:

Member Function Documentation

◆ check()

bool timeout_rtc_handler::check ( )
inlineoverridevirtual

Reimplemented from exprtk::loop_runtime_check.

Definition at line 49 of file exprtk_loop_timeout_rtc.cpp.

50 {
51 static constexpr std::size_t max_iters_per_check = 100000;
52
53 if (++iterations_ >= max_iters_per_check)
54 {
55 if (std::chrono::steady_clock::now() >= timeout_tp_)
56 {
57 return false;
58 }
59
60 iterations_ = 0;
61 }
62
63 return true;
64 }

References iterations_, and timeout_tp_.

◆ handle_runtime_violation()

void timeout_rtc_handler::handle_runtime_violation ( const violation_context & )
inlineoverridevirtual

Reimplemented from exprtk::loop_runtime_check.

Definition at line 66 of file exprtk_loop_timeout_rtc.cpp.

67 {
68 throw timeout_exception("Loop run-time timeout violation.");
69 }

◆ set_timeout_time()

void timeout_rtc_handler::set_timeout_time ( const time_point_t & timeout_tp)
inline

Definition at line 44 of file exprtk_loop_timeout_rtc.cpp.

45 {
46 timeout_tp_ = timeout_tp;
47 }

References timeout_tp_.

Referenced by loop_timeout_rtc().

Here is the caller graph for this function:

Member Data Documentation

◆ iterations_

std::size_t timeout_rtc_handler::iterations_ = 0

Definition at line 71 of file exprtk_loop_timeout_rtc.cpp.

Referenced by check().

◆ timeout_tp_

time_point_t timeout_rtc_handler::timeout_tp_

Definition at line 72 of file exprtk_loop_timeout_rtc.cpp.

Referenced by check(), and set_timeout_time().


The documentation for this struct was generated from the following file: