Boost logo

Boost Users :

Subject: Re: [Boost-users] Boost.MSM -> Ignore events that were not explicitly defined for a state
From: RaRi (degoah_at_[hidden])
Date: 2012-12-18 17:34:44


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]" <ml-node+s2283326n4640304h12_at_[hidden]> schrieb:
	Hi, 
<snip> 
>                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 <class FSM,class Event> 
        void no_transition(Event const& e, FSM&,int state) 
        { 
            std::cout << "no transition from state " << state 
                << " on event " << typeid(e).name() << std::endl; 
        } 
- handle the event to show that you expected this case to arise. A simple 
internal transition in State1 will do (see 
http://svn.boost.org/svn/boost/trunk/libs/msm/doc/HTML/ch03s03.html#d0e1338). I 
personally add an action to this transition to log this but it's a matter of 
taste. Internal<Event2> would actually do. 
HTH, 
Christophe 
_______________________________________________ 
Boost-users mailing list 
[hidden email] 
http://lists.boost.org/mailman/listinfo.cgi/boost-users
	 	 	 	
	
	_____________________________________________
	
		
If you reply to this email, your message will be added to the discussion below:
		http://boost.2283326.n4.nabble.com/Boost-MSM-Ignore-events-that-were-not-explicitly-defined-for-a-state-tp4640291p4640304.html 	
	
		 		To unsubscribe from Boost.MSM -> Ignore events that were not explicitly defined for a state, click here.
		NAML 	
--
View this message in context: http://boost.2283326.n4.nabble.com/Boost-MSM-Ignore-events-that-were-not-explicitly-defined-for-a-state-tp4640291p4640307.html
Sent from the Boost - Users mailing list archive at Nabble.com.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net