Boost logo

Boost :

Subject: [boost] [MSM] event deferral and dispatching with base event
From: Richard Szabo (sz.richard_at_[hidden])
Date: 2011-07-18 06:26:43


Hi Christophe

I'm running the attached test program it generates the following output :

entering: Idle MS1_
leaving: Idle
Action: MS1::onEvent1
entering: RunningStateMachine MS1_
entering: RunningStateMachine::PseudoEntry1
leaving: RunningStateMachine::PseudoEntry1
entering: Inner1 RunningStateMachine_
entering: InnerState11
FwdGuard: returns:0, event: event5
FwdGuard: returns:0, event: event1
FwdGuard: returns:0, event: event1
FwdGuard: returns:0, event: event5
FwdGuard: returns:0, event: event1
FwdGuard: returns:0, event: event1
FwdGuard: returns:0, event: event5
FwdGuard: returns:0, event: event1
FwdGuard: returns:0, event: event1
FwdGuard: returns:0, event: event5

I believe it is incorrect after state machine entered state InnerState11 .
FwdGuard should have been called ones with event5 and than 3 times with event1
and event1 shall have triggered after the first dispatching a no transaction.

But this case no trans was triggers on even1 and and the deferred
event5 got dispatched even there was no state change for every event1
dispatching.

this breaks our code execution completely :(.

Br.
Richard




Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk