Boost logo

Boost :

From: Andreas Huber (ah2003_at_[hidden])
Date: 2004-05-25 05:23:53


David Abrahams <dave <at> boost-consulting.com> writes:

> > Are you proposing that an active state should still be represented by an
> > object,
>
> I don't have enough knowledge of the FSM domain to say whether that's
> a good design or not; I have to trust you that it makes sense to have
> a correspondence between states and distinct types whose instances'
> lifetimes correspond to the time spent in the state.

That an active state is represented by an object is crucial to satisfy the
scalability requirements. Otherwise adding a variable that is used only in a
part of the machine would lead to the recompilation of the whole state machine.

> > which acquires resources and executes entry actions in its
> > constructor, releases resources in its destructor but executes exit
> > actions in a separate function, which is called just before
> > destructing the state object?
>
> Yes, that's basically what I was saying.

This is certainly doable. However, I'm unsure whether the current design
allows a you-don't-pay-for-what-you-don't-use implementation of such a
feature. Plus, I'm still not convinced that this feature would be used more
than rarely. Do you have some real-world use cases in mind?
If this is needed only rarely I'd rather have users work around the problem by
setting a boolean and posting an error event in a failing exit action and then
testing that boolean in all following exit actions.

Regards,

Andreas


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