C++ Mathematical Expression Toolkit (ExprTk) release
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
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

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: