
Hi Christophe,
thx for the fast response. I will check evaluate your suggestion as fast as possible.
I have another issue with MSM: Is there a possibility to model a "do:)"-activity within a state (some UML modelling tools like enterprise architect support this kind of activity)? This means an action which is executed between the entry-Action ( void on_exit (...)) and the exit-action (void on_exit (...))?
Maybe this can be solved by using an internal transition within a state which defines among the entry- and exit function additionally the functor "operator ()(...){// Do something state-specific}" ?!
It would be great IFA you could provide me within something information if MSM supports such "Do"-activities in a state.
Thanks in advanced,
RaRi
--
Diese Nachricht wurde von meinem Android Mobiltelefon mit GMX Mail gesendet.
"Christophe Henry-3 [via Boost]"
struct transition_table:mpl::vector< // Start Event Next Action Guard msmf::Row < State1, Event1, State2, msmf::none, msmf::none >, msmf::Row < State2, Event2, State3, msmf::none, msmf::none > > {}; }; void test() { Sm1 sm1; sm1.start(); std::cout << "> Send Event2" << std::endl; sm1.process_event(Event2()); std::cout << "> Send Event1" << std::endl; sm1.process_event(Event1()); } }
<snip>
If I compile and execute the code above the software crashes due to the fact, that *Event2* is received in the state *State1*.
My understanding of a state machine and boost.msm was, that all events which are not defined for a particular state, will be just ignored and the state receiving this unknown event (here *Event2*) will keept.
Is there a possibility in boost.msm ( maybe by adopting to the transition table) to stay in the current state if an event was received which was not assigned to this state?
Thank you in advance!
Best regards,
RaRi
Strictly speaking, it is considered an error when an event is sent to a
state machine which is not in a state where it can process it.
MSM's default is an assert, so you will get this only in debug mode.
You have 2 possibilities:
- the easy one, overwrite the default handler in the front-end:
// Replaces the default no-transition response.
template