$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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