-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathObservable.h
42 lines (33 loc) · 861 Bytes
/
Observable.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#ifndef _COMPONENT_INTERFACE_H_
#include "ComponentInterface.h"
#endif
#ifndef _OBSERVABLE_H_
#define _OBSERVABLE_H_
#define MAX_ARR_SIZE_OBS 8
#define MAX_ARR_SIZE_EVT 16
class Observer;
class Data;
class Observable : public ComponentInterface {
private:
Observer* _obsList[MAX_ARR_SIZE_OBS];
uint32_t _obsListIdx;
Data* _dataList[MAX_ARR_SIZE_EVT];
uint32_t _dataListIdx;
public:
explicit Observable();
virtual ~Observable();
void subscribe(Observer* obs);
void push(Data* data);
uint32_t getDataListLen() const { return _dataListIdx; }
Data& getData(uint32_t idx) const { return *(_dataList[idx]); }
virtual void generateData() = 0;
#ifdef LINUX
unsigned long millis();
#endif
// Override ComponentInterface
public:
virtual bool setup();
virtual void loop();
virtual uint32_t getPeriod() const = 0;
};
#endif