Boost logo

Boost :

Subject: Re: [boost] [msm] Problems with no_message_queue and pseudo exit states
From: Christophe Henry (christophe.j.henry_at_[hidden])
Date: 2010-06-12 01:54:27


> I know your are quiet bussy releasing msm but we found something and we do
> not know whether it is the intended behaviour or a bug.
>
> We implemented a little state machine with a submachine. The submachine
> has an pseudo exit state.
> If we use "typedef no_message_queue" in the state machine as well as in
> the submachine, then the state machines get somehow mixed up and do not
> act normally once you leave the submachine via the pseudo exit state.
> In that case msm does not exit the pseudo exit state.
>
> We followed almost your example that you provide in the documentation.
>
> Is that known to you? Does it make sense to fix that or are there serious
> reasons why msm behaves like that?

It's clearly a doc bug, I thought I had written it, but looks like I didn't :(
Pseudo exit states are implemented by generating a new event
(convertible from the original one) upon entering the pseudo entry, in
order to get the UML priority right (deepest-level transitions tried
first for a given event).
This effectively makes pseudo exit states and no_message_queue
incompatible, at least for the containing machine.
I'm not completely happy with this implementation so this one also is
on my radar.

Thanks for reporting this. I wanted to add during the WE the points
you already reported into the doc so I will add this restriction too.
If I forget nothing:
- pseudo exit points / no_message_queue
- no explicit entry to submachines at the moment
- references in the forwarding constructor with ref/cref
- add some explanations for the entry state / explicit entry syntax

If I forgot something, we still have some time before the release.

Regards,

Christophe


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