Elma
An event loop manager for embedded systems
channel.h
1 #ifndef _ELMA_CHANNEL_H
2 #define _ELMA_CHANNEL_H
3 
4 #include <string>
5 #include <deque>
6 #include <json/json.h>
7 
8 #include "elma.h"
9 
10 namespace elma {
11 
12  using std::string;
13  using std::deque;
14  using nlohmann::json;
15 
17 
21  class Channel {
22 
23  public:
24 
27  Channel(string name) : _name(name), _capacity(100) {}
28 
32  Channel(string name, int capacity) : _name(name), _capacity(capacity) {}
33 
34  Channel& send(json);
35  Channel& flush();
36  json latest();
37  json earliest();
38 
41  inline int size() { return _queue.size(); }
42 
45  inline bool empty() { return _queue.size() == 0; }
46 
49  inline bool nonempty() { return _queue.size() > 0; }
50 
53  inline string name() { return _name; }
54 
57  inline int capacity() { return _capacity; }
58 
59  private:
60 
61  string _name;
62  int _capacity;
63  deque<json> _queue;
64 
65  };
66 
67 }
68 
69 #endif
json latest()
Definition: channel.cc:28
Channel(string name, int capacity)
Definition: channel.h:32
bool nonempty()
Definition: channel.h:49
Channel(string name)
Definition: channel.h:27
Channel & flush()
Definition: channel.cc:20
json earliest()
Definition: channel.cc:38
Channel & send(json)
Definition: channel.cc:10
bool empty()
Definition: channel.h:45
A channel for sending double values to and from Process objects.
Definition: channel.h:21
int size()
Definition: channel.h:41
Definition: channel.cc:5
int capacity()
Definition: channel.h:57
string name()
Definition: channel.h:53