]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/msm/doc/HTML/examples/logging_functors.h
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / msm / doc / HTML / examples / logging_functors.h
CommitLineData
7c673cae
FG
1// Copyright 2010 Christophe Henry
2// henry UNDERSCORE christophe AT hotmail DOT com
3// This is an extended version of the state machine available in the boost::mpl library
4// Distributed under the same license as the original.
5// Copyright for the original version:
6// Copyright 2005 David Abrahams and Aleksey Gurtovoy. Distributed
7// under the Boost Software License, Version 1.0. (See accompanying
8// file LICENSE_1_0.txt or copy at
9// http://www.boost.org/LICENSE_1_0.txt)
10
11#ifndef LOGGING_FUNCTORS
12#define LOGGING_FUNCTORS
13
14BOOST_MSM_EUML_ACTION(Empty_Entry)
15{
16 template <class Event,class FSM,class STATE>
17 void operator()(Event const&,FSM&,STATE& )
18 {
19 std::cout << "entering: Empty" << std::endl;
20 }
21};
22BOOST_MSM_EUML_ACTION(Empty_Exit)
23{
24 template <class Event,class FSM,class STATE>
25 void operator()(Event const&,FSM&,STATE& )
26 {
27 std::cout << "leaving: Empty" << std::endl;
28 }
29};
30
31BOOST_MSM_EUML_ACTION(Open_Entry)
32{
33 template <class Event,class FSM,class STATE>
34 void operator()(Event const&,FSM&,STATE& )
35 {
36 std::cout << "entering: Open" << std::endl;
37 }
38};
39BOOST_MSM_EUML_ACTION(Open_Exit)
40{
41 template <class Event,class FSM,class STATE>
42 void operator()(Event const&,FSM&,STATE& )
43 {
44 std::cout << "leaving: Open" << std::endl;
45 }
46};
47
48BOOST_MSM_EUML_ACTION(Stopped_Entry)
49{
50 template <class Event,class FSM,class STATE>
51 void operator()(Event const&,FSM&,STATE& )
52 {
53 std::cout << "entering: Stopped" << std::endl;
54 }
55};
56BOOST_MSM_EUML_ACTION(Stopped_Exit)
57{
58 template <class Event,class FSM,class STATE>
59 void operator()(Event const&,FSM&,STATE& )
60 {
61 std::cout << "leaving: Stopped" << std::endl;
62 }
63};
64
65BOOST_MSM_EUML_ACTION(AllOk_Entry)
66{
67 template <class Event,class FSM,class STATE>
68 void operator()(Event const&,FSM&,STATE& )
69 {
70 std::cout << "starting: AllOk" << std::endl;
71 }
72};
73BOOST_MSM_EUML_ACTION(AllOk_Exit)
74{
75 template <class Event,class FSM,class STATE>
76 void operator()(Event const&,FSM&,STATE& )
77 {
78 std::cout << "finishing: AllOk" << std::endl;
79 }
80};
81
82BOOST_MSM_EUML_ACTION(ErrorMode_Entry)
83{
84 template <class Event,class FSM,class STATE>
85 void operator()(Event const&,FSM&,STATE& )
86 {
87 std::cout << "starting: ErrorMode" << std::endl;
88 }
89};
90BOOST_MSM_EUML_ACTION(ErrorMode_Exit)
91{
92 template <class Event,class FSM,class STATE>
93 void operator()(Event const&,FSM&,STATE& )
94 {
95 std::cout << "finishing: ErrorMode" << std::endl;
96 }
97};
98
99BOOST_MSM_EUML_ACTION(Playing_Entry)
100{
101 template <class Event,class FSM,class STATE>
102 void operator()(Event const&,FSM&,STATE& )
103 {
104 std::cout << "entering: Playing" << std::endl;
105 }
106};
107BOOST_MSM_EUML_ACTION(Playing_Exit)
108{
109 template <class Event,class FSM,class STATE>
110 void operator()(Event const&,FSM&,STATE& )
111 {
112 std::cout << "leaving: Playing" << std::endl;
113 }
114};
115
116BOOST_MSM_EUML_ACTION(Song1_Entry)
117{
118 template <class Event,class FSM,class STATE>
119 void operator()(Event const&,FSM&,STATE& )
120 {
121 std::cout << "starting: First song" << std::endl;
122 }
123};
124BOOST_MSM_EUML_ACTION(Song1_Exit)
125{
126 template <class Event,class FSM,class STATE>
127 void operator()(Event const&,FSM&,STATE& )
128 {
129 std::cout << "finishing: First Song" << std::endl;
130 }
131};
132
133BOOST_MSM_EUML_ACTION(Song2_Entry)
134{
135 template <class Event,class FSM,class STATE>
136 void operator()(Event const&,FSM&,STATE& )
137 {
138 std::cout << "starting: Second song" << std::endl;
139 }
140};
141BOOST_MSM_EUML_ACTION(Song2_Exit)
142{
143 template <class Event,class FSM,class STATE>
144 void operator()(Event const&,FSM&,STATE& )
145 {
146 std::cout << "finishing: Second Song" << std::endl;
147 }
148};
149
150BOOST_MSM_EUML_ACTION(Song3_Entry)
151{
152 template <class Event,class FSM,class STATE>
153 void operator()(Event const&,FSM&,STATE& )
154 {
155 std::cout << "starting: Third song" << std::endl;
156 }
157};
158BOOST_MSM_EUML_ACTION(Song3_Exit)
159{
160 template <class Event,class FSM,class STATE>
161 void operator()(Event const&,FSM&,STATE& )
162 {
163 std::cout << "finishing: Third Song" << std::endl;
164 }
165};
166
167BOOST_MSM_EUML_ACTION(Region2State1_Entry)
168{
169 template <class Event,class FSM,class STATE>
170 void operator()(Event const&,FSM&,STATE& )
171 {
172 std::cout << "starting: Region2State1" << std::endl;
173 }
174};
175BOOST_MSM_EUML_ACTION(Region2State1_Exit)
176{
177 template <class Event,class FSM,class STATE>
178 void operator()(Event const&,FSM&,STATE& )
179 {
180 std::cout << "finishing: Region2State1" << std::endl;
181 }
182};
183BOOST_MSM_EUML_ACTION(Region2State2_Entry)
184{
185 template <class Event,class FSM,class STATE>
186 void operator()(Event const&,FSM&,STATE& )
187 {
188 std::cout << "starting: Region2State2" << std::endl;
189 }
190};
191BOOST_MSM_EUML_ACTION(Region2State2_Exit)
192{
193 template <class Event,class FSM,class STATE>
194 void operator()(Event const&,FSM&,STATE& )
195 {
196 std::cout << "finishing: Region2State2" << std::endl;
197 }
198};
199// transition actions for Playing
200BOOST_MSM_EUML_ACTION(start_next_song)
201{
202 template <class FSM,class EVT,class SourceState,class TargetState>
203 void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
204 {
205 std::cout << "Playing::start_next_song" << endl;
206 }
207};
208BOOST_MSM_EUML_ACTION(start_prev_song)
209{
210 template <class FSM,class EVT,class SourceState,class TargetState>
211 void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
212 {
213 std::cout << "Playing::start_prev_song" << endl;
214 }
215};
216
217// transition actions
218BOOST_MSM_EUML_ACTION(start_playback)
219{
220 template <class FSM,class EVT,class SourceState,class TargetState>
221 void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
222 {
223 cout << "player::start_playback" << endl;
224 }
225};
226BOOST_MSM_EUML_ACTION(open_drawer)
227{
228 template <class FSM,class EVT,class SourceState,class TargetState>
229 void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
230 {
231 cout << "player::open_drawer" << endl;
232 }
233};
234BOOST_MSM_EUML_ACTION(close_drawer)
235{
236 template <class FSM,class EVT,class SourceState,class TargetState>
237 void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
238 {
239 cout << "player::close_drawer" << endl;
240 }
241};
242BOOST_MSM_EUML_ACTION(store_cd_info)
243{
244 template <class FSM,class EVT,class SourceState,class TargetState>
245 void operator()(EVT const&, FSM& ,SourceState& ,TargetState& )
246 {
247 cout << "player::store_cd_info" << endl;
248 // it is now easy to use the message queue.
249 // alternatively to the proces_ in the transition table, we could write:
250 // fsm.process_event(play());
251 }
252};
253BOOST_MSM_EUML_ACTION(stop_playback)
254{
255 template <class FSM,class EVT,class SourceState,class TargetState>
256 void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
257 {
258 cout << "player::stop_playback" << endl;
259 }
260};
261BOOST_MSM_EUML_ACTION(pause_playback)
262{
263 template <class FSM,class EVT,class SourceState,class TargetState>
264 void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
265 {
266 cout << "player::pause_playback" << endl;
267 }
268};
269BOOST_MSM_EUML_ACTION(resume_playback)
270{
271 template <class FSM,class EVT,class SourceState,class TargetState>
272 void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
273 {
274 cout << "player::resume_playback" << endl;
275 }
276};
277BOOST_MSM_EUML_ACTION(stop_and_open)
278{
279 template <class FSM,class EVT,class SourceState,class TargetState>
280 void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
281 {
282 cout << "player::stop_and_open" << endl;
283 }
284};
285BOOST_MSM_EUML_ACTION(stopped_again)
286{
287 template <class FSM,class EVT,class SourceState,class TargetState>
288 void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
289 {
290 cout << "player::stopped_again" << endl;
291 }
292};
293
294BOOST_MSM_EUML_ACTION(report_error)
295{
296 template <class FSM,class EVT,class SourceState,class TargetState>
297 void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
298 {
299 cout << "player::report_error" << endl;
300 }
301};
302
303BOOST_MSM_EUML_ACTION(report_end_error)
304{
305 template <class FSM,class EVT,class SourceState,class TargetState>
306 void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
307 {
308 cout << "player::report_end_error" << endl;
309 }
310};
311BOOST_MSM_EUML_ACTION(internal_action1)
312{
313 template <class FSM,class EVT,class SourceState,class TargetState>
314 void operator()(EVT const&, FSM& ,SourceState& ,TargetState& )
315 {
316 cout << "Open::internal action1" << endl;
317 }
318};
319BOOST_MSM_EUML_ACTION(internal_action2)
320{
321 template <class FSM,class EVT,class SourceState,class TargetState>
322 void operator()(EVT const&, FSM& ,SourceState& ,TargetState& )
323 {
324 cout << "Open::internal action2" << endl;
325 }
326};
327BOOST_MSM_EUML_ACTION(internal_action)
328{
329 template <class FSM,class EVT,class SourceState,class TargetState>
330 void operator()(EVT const&, FSM& ,SourceState& ,TargetState& )
331 {
332 cout << "Open::internal action" << endl;
333 }
334};
335enum DiskTypeEnum
336{
337 DISK_CD=0,
338 DISK_DVD=1
339};
340
341// Handler called when no_transition detected
342BOOST_MSM_EUML_ACTION(Log_No_Transition)
343{
344 template <class FSM,class Event>
345 void operator()(Event const& e,FSM&,int state)
346 {
347 std::cout << "no transition from state " << state
348 << " on event " << typeid(e).name() << std::endl;
349 }
350};
351
352BOOST_MSM_EUML_ACTION(internal_guard1)
353{
354 template <class FSM,class EVT,class SourceState,class TargetState>
355 bool operator()(EVT const&, FSM& ,SourceState& ,TargetState& )
356 {
357 cout << "Open::internal guard1" << endl;
358 return false;
359 }
360};
361BOOST_MSM_EUML_ACTION(internal_guard2)
362{
363 template <class FSM,class EVT,class SourceState,class TargetState>
364 bool operator()(EVT const&, FSM& ,SourceState& ,TargetState& )
365 {
366 cout << "Open::internal guard2" << endl;
367 return false;
368 }
369};
370#endif // LOGGING_FUNCTORS