Krotos Modules 3
Loading...
Searching...
No Matches
Serialiser.h
Go to the documentation of this file.
1#pragma once
2namespace krotos
3{
4 class Serialiser : private JsonFile
5 {
6 public:
7 struct Action
8 {
19 Action(String actionName, int actionPriority) : name(actionName), priority(actionPriority) {}
20
21 virtual ~Action() = default;
22
23 String name{"Default"};
24 String output{"Default"};
25 int priority{1};
26 bool done{false};
27
28 virtual bool execute() = 0;
29 };
30
31 Serialiser(File serialiserFile);
32
33 const struct SerialiserTags
34 {
35 static const Identifier Version;
36 static const Identifier Actions;
37
38 static const Identifier Action;
39 static const Identifier Priority;
40 static const Identifier Done;
41 static const Identifier ExecutedAt;
42 static const Identifier Output;
43 };
44
51 void addAction(std::unique_ptr<Action> action);
52
59 void executeActions();
60
65 bool isActionDone(String actionName);
66
67 private:
68 void createActionQueue();
69
70 void writeActionData();
71
72 std::vector<Action*> m_actionQueue;
73 std::vector<Action*> m_executedActions;
74
76
77 std::map<String, std::unique_ptr<Action>> m_actionMap;
78
79 static const String DEFAULT_FORMAT;
80 };
81} // namespace krotos
Definition JsonFile.h:6
Definition Serialiser.h:5
void writeActionData()
Definition Serialiser.cpp:91
void addAction(std::unique_ptr< Action > action)
Add an action object to the serialiser which will be executed. Create your own subclass of Action ove...
Definition Serialiser.cpp:18
void createActionQueue()
Definition Serialiser.cpp:55
std::vector< Action * > m_executedActions
Definition Serialiser.h:73
static const String DEFAULT_FORMAT
Definition Serialiser.h:79
std::vector< Action * > m_actionQueue
Definition Serialiser.h:72
Serialiser(File serialiserFile)
Definition Serialiser.cpp:16
bool isActionDone(String actionName)
Returns true if the action has been executed.
Definition Serialiser.cpp:43
void executeActions()
Execute the serialiser. This will parse actions from the serialiser file, executing all added actions...
Definition Serialiser.cpp:23
std::map< String, std::unique_ptr< Action > > m_actionMap
Definition Serialiser.h:77
Definition AirAbsorptionFilter.cpp:2
Definition Serialiser.h:8
int priority
Definition Serialiser.h:25
String output
Definition Serialiser.h:24
bool done
Definition Serialiser.h:26
virtual ~Action()=default
virtual bool execute()=0
String name
Definition Serialiser.h:23
Action(String actionName, int actionPriority)
A base struct for an action. Execute is called when this action is executed from the json....
Definition Serialiser.h:19
Definition Serialiser.h:34
static const Identifier Done
Definition Serialiser.h:40
static const Identifier Output
Definition Serialiser.h:42
static const Identifier Action
Definition Serialiser.h:38
static const Identifier ExecutedAt
Definition Serialiser.h:41
static const Identifier Priority
Definition Serialiser.h:39
static const Identifier Actions
Definition Serialiser.h:36
static const Identifier Version
Definition Serialiser.h:35