YARP
Yet Another Robot Platform
 
Loading...
Searching...
No Matches
execstate.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3 * SPDX-License-Identifier: BSD-3-Clause
4 */
5
6#ifndef YARP_MANAGER_Exec_State
7#define YARP_MANAGER_Exec_State
8
9#include <yarp/manager/fsm.h>
10#include <yarp/conf/api.h>
11
12
13namespace yarp::manager {
14
15class Executable;
16
17
22{
23public:
24 virtual ~ITransition() = default;
25 virtual void kill() = 0;
26 virtual void moduleFailed() = 0;
27 virtual void refresh() {}
28 virtual void connectionFailed(void* which) {}
29 virtual void start() {}
30 virtual void stop() {}
31 virtual void startModule() {}
32 virtual void stopModule() {}
33 virtual void killModule() {}
34 virtual void connectAllPorts() {}
35 virtual void disconnectAllPorts() {}
36};
37
38
57
58
62class Suspended : public ITransition, public FSM::StateBase
63{
64public:
65 Suspended(Executable* pExecutable, FSM::IEventSink* pEventSink);
66 ~Suspended() override;
67
68public:
69 void start() override;
70 void stop() override;
71 void kill() override;
72 void refresh() override;
73 void moduleFailed() override;
74
75public:
77};
78
79
83class Ready : public ITransition, public FSM::StateBase
84{
85public:
86 Ready(Executable* pExecutable, FSM::IEventSink* pEventSink);
87 ~Ready() override;
88
89public:
90 void kill() override;
91 void startModule() override;
92 void moduleFailed() override;
93
94private:
95 Executable* executable;
96 bool bAborted;
97 bool checkPriorityPorts();
98 bool checkResources(bool silent=true);
99 bool timeout(double base, double timeout);
100};
101
102
103
108{
109public:
110 Connecting(Executable* pExecutable, FSM::IEventSink* pEventSink);
111 ~Connecting() override;
112
113public:
114 void refresh() override;
115 void kill() override;
116 void connectAllPorts() override;
117 void moduleFailed() override;
118
119private:
120 Executable* executable;
121 bool checkNormalPorts();
122 bool bAborted;
123};
124
125
126
130class Running : public ITransition, public FSM::StateBase
131{
132public:
133 Running(Executable* pExecutable, FSM::IEventSink* pEventSink);
134 ~Running() override;
135
136public:
137 void refresh() override;
138 void kill() override;
139 void start() override;
140 void stop() override;
141 void moduleFailed() override;
142 void connectionFailed(void* which) override;
143
144private:
145 Executable* executable;
146};
147
148
152class Dying : public ITransition, public FSM::StateBase
153{
154public:
155 Dying(Executable* pExecutable, FSM::IEventSink* pEventSink);
156 ~Dying() override;
157
158public:
159 void refresh() override;
160 void kill() override;
161 void moduleFailed() override;
162 void stopModule() override;
163 void killModule() override;
164 void disconnectAllPorts() override;
165
166private:
167 Executable* executable;
168};
169
170
174class Dead : public ITransition, public FSM::StateBase
175{
176public:
177 Dead(Executable* pExecutable, FSM::IEventSink* pEventSink);
178 ~Dead() override;
179
180public:
181 void start() override;
182 void stop() override;
183 void kill() override;
184 void refresh() override;
185 void moduleFailed() override;
186
187private:
188 Executable* executable;
189};
190
191
196{
197public:
198 ExecMachine(Executable* pExecutable);
199 ~ExecMachine() override;
200
201 void refresh();
202 void start();
203 void stop();
204 void kill();
205 void startModule();
206 void stopModule();
207 void killModule();
208 void connectAllPorts();
209 void disconnectAllPorts();
210 void moduleFailed();
211 void connectionFailed(void* which);
212
213protected:
214 void onTransition(FSM::StateBase* previous,
215 FSM::Event* event, FSM::StateBase* current) override;
216
217private:
218 Executable* executable;
219 Running* running;
220 Suspended* suspended;
221 Ready* ready;
222 Connecting* connecting;
223 Dead* dead;
224 Dying* dying;
225};
226
227} // namespace yarp::manager
228
229
230#endif // __YARP_MANAGER_Exec_State__
class IEventSink
Definition fsm.h:29
class IEventSink
Definition fsm.h:56
Class StateBase.
Definition fsm.h:77
Class StateMachineBase.
Definition fsm.h:107
class Connecting
Definition execstate.h:108
void moduleFailed() override
void connectAllPorts() override
void refresh() override
void moduleFailed() override
void start() override
void stop() override
void kill() override
void refresh() override
void disconnectAllPorts() override
void refresh() override
void kill() override
void stopModule() override
void moduleFailed() override
void killModule() override
static FSM::Event * connectAllPortsEventFailed
Definition execstate.h:54
static FSM::Event * startModuleEventOk
Definition execstate.h:47
static FSM::Event * startModuleEventFailed
Definition execstate.h:48
static FSM::Event * stopModuleEventFailed
Definition execstate.h:50
static FSM::Event * killModuleEventOk
Definition execstate.h:51
static FSM::Event * startEvent
Initializing event factory.
Definition execstate.h:42
static FSM::Event * killEvent
Definition execstate.h:44
static FSM::Event * connectAllPortsEventOk
Definition execstate.h:53
static FSM::Event * disconnectAllPortsEventOk
Definition execstate.h:55
static FSM::Event * killModuleEventFailed
Definition execstate.h:52
static FSM::Event * failedEvent
Definition execstate.h:45
static FSM::Event * recoverEvent
Definition execstate.h:46
static FSM::Event * stopModuleEventOk
Definition execstate.h:49
static FSM::Event * stopEvent
Definition execstate.h:43
Class ExecMachine.
Definition execstate.h:196
void onTransition(FSM::StateBase *previous, FSM::Event *event, FSM::StateBase *current) override
Callback onTransition represents the change in the states.
void connectionFailed(void *which)
Class Executable.
Definition executable.h:71
all transitions are used in state machine
Definition execstate.h:22
virtual void stopModule()
Definition execstate.h:32
virtual void startModule()
Definition execstate.h:31
virtual void connectionFailed(void *which)
Definition execstate.h:28
virtual void disconnectAllPorts()
Definition execstate.h:35
virtual ~ITransition()=default
virtual void connectAllPorts()
Definition execstate.h:34
virtual void moduleFailed()=0
virtual void killModule()
Definition execstate.h:33
virtual void refresh()
Definition execstate.h:27
void moduleFailed() override
void startModule() override
void kill() override
void connectionFailed(void *which) override
void refresh() override
void start() override
void moduleFailed() override
void stop() override
void kill() override
class Suspended
Definition execstate.h:63
void kill() override
Definition execstate.cpp:59
void stop() override
Definition execstate.cpp:54
void refresh() override
Definition execstate.cpp:69
Executable * executable
Definition execstate.h:76
void moduleFailed() override
Definition execstate.cpp:64
void start() override
Definition execstate.cpp:49