1 #ifndef _ELMA_MANAGER_H 2 #define _ELMA_MANAGER_H 32 Manager() : _running(false), _simulated_time(false), _nice_sleep_amount(1_us) {}
34 Manager& schedule(
Process& process, high_resolution_clock::duration period);
49 Manager& run(high_resolution_clock::duration runtime);
51 Manager& run(std::function<
bool()> condition);
55 inline high_resolution_clock::time_point
start_time() {
return _start_time; }
59 inline high_resolution_clock::duration
elapsed() {
return _elapsed; }
69 _nice_sleep_amount = n;
78 Manager& watch(
string event_name, std::function<
void(
Event&)> handler);
80 Client& client() {
return _client; }
84 void update_elapsed_time();
86 const int Priority_min = -5, Priority_max = 15;
87 vector<Process *> _processes;
88 map<string, Channel *> _channels;
89 map<string, vector<std::function<void(Event&)>>> event_handlers;
90 high_resolution_clock::time_point _start_time;
91 high_resolution_clock::duration _elapsed;
96 std::mutex _update_mutex;
97 high_resolution_clock::duration _nice_sleep_amount;
The Process Manager class.
high_resolution_clock::duration elapsed()
An HTTP client for connecting to json services.
Events that can be emitted, watched, and responded to with event handlers.
std::mutex & get_update_mutex()
Manager & set_niceness(high_resolution_clock::duration n)
high_resolution_clock::time_point start_time()
A channel for sending double values to and from Process objects.
Manager()
Default constructor.
An abstract base class for processes.