Elma
An event loop manager for embedded systems
 All Classes Files Functions Enumerations
manager.h
1 #ifndef MANAGER_H
2 #define MANAGER_H
3 
4 #include <vector>
5 #include <map>
6 #include <chrono>
7 #include <functional>
8 
9 #include "elma.h"
10 
11 namespace elma {
12 
13  using std::string;
14  using std::vector;
15  using std::map;
16  using namespace std::chrono;
17 
18  class Channel;
19  class Process;
20 
22 
25 
26  class Manager {
27 
28  public:
29 
31  Manager() {}
32 
33  Manager& schedule(Process& process, high_resolution_clock::duration period);
34  Manager& all(std::function<void(Process&)> f);
35 
36  Manager& init();
37  Manager& start();
38  Manager& update();
39  Manager& stop();
40 
41  Manager& run(high_resolution_clock::duration);
42 
45  inline high_resolution_clock::time_point start_time() { return _start_time; }
46 
49  inline high_resolution_clock::duration elapsed() { return _elapsed; }
50 
51  // Channel Interface
52  Manager& add_channel(Channel&);
53  Channel& channel(string);
54 
55  // Event Interface
56  Manager& watch(string event_name, std::function<void(Event&)> handler);
57  Manager& emit(const Event& event);
58  Client& client() { return _client; }
59 
60  private:
61  vector<Process *> _processes;
62  map<string, Channel *> _channels;
63  map<string, vector<std::function<void(Event&)>>> event_handlers;
64  high_resolution_clock::time_point _start_time;
65  high_resolution_clock::duration _elapsed;
66  Client _client;
67 
68  };
69 
70 }
71 
72 #endif
The Process Manager class.
Definition: manager.h:26
high_resolution_clock::duration elapsed()
Definition: manager.h:49
An HTTP client for connecting to json services.
Definition: client.h:34
Events that can be emitted, watched, and responded to with event handlers.
Definition: event.h:23
high_resolution_clock::time_point start_time()
Definition: manager.h:45
A channel for sending double values to and from Process objects.
Definition: channel.h:21
Manager()
Default constructor.
Definition: manager.h:31
Definition: manager.h:11
An abstract base class for processes.
Definition: process.h:24