ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> boost
boost
[boost] Re: [fsm] transition context and exit()
by Andreas Huber other posts by this author
Jun 7 2004 9:18PM messages near this date
[boost] [prereview request][fsm] | [boost] Re: [fsm] transition context and exit()
Darryl Green wrote:
> > I think the only way to avoid the non-throwing exit actions in 2 is
> > to use the ephemeral error state or the exit() error handling you
> > proposed for *all* failures, not only for exit.
> 
>  Ok - that sounds like it would be the only sufficiently
>  regular/comprehensive alternative to (1) to be worthy of further
>  consideration.
> 
> > It is worth to explore this some more.
> > What do you think?
> 
>  I am not sure if anything other than (1) is really useful. I think
>  (2), if exception handling within the fsm framework is to be really
>  useful, is too restrictive. I think (3) (meaning 2 with the
>  modifications to allow exit to fail) might be too restrictive/hard to
>  use to be really useful. It is the last point I'd really like to hear
>  from others on. I find the idea interesting, but I wouldn't actually
>  encourage you to invest effort in implementing it at this stage.

I've thought a little about (3) and will probably let it be until I have
implemented the extensions (exit() and BOOST_FSM_RELAX_TRANSITION_CONTEXT).
Moreover, I'll make (1) the default and describe (2) as an optional feature
for the adventurous ;-).
Regarding (2) I think I have found a model that, with limitations, allows
for throwing exit(). The rules:
a. All exit() functions are allowed to propagate exceptions at any time
b. During normal operation, exit() will be called just before the state
object is destructed
c. exit() is not called when there is currently an exception "pending"
(thrown from either a state constructor, a transition action or another
exit() function). As soon as the exception has been handled (i.e. the state
machine is stable), exit() is called again in the next transition or
termination
d. exit() is never called when a state machine is destructed

These rules extend the ones already in place now. Admittedly, the whole rule
set is rather complex and I'm not even sure whether it is water-tight in all
situations. We'll see how that works out...

Regards,

Andreas

P.S. I'll be off for my holidays by Friday at the latest and not be back
before 1st of July. Unfortunately, I won't be able to implement anything
beforehand and will be swamped with other stuff when I return. So, I'm
afraid there won't be any progress before roughly mid-July. I hope you can
wait until then.


_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Thread:
Andreas Huber
Andreas Huber
Andreas Huber
Darryl Green
Darryl Green
Darryl Green
Darryl Green
Andreas Huber
E. Gladyshev
Andreas Huber
Andreas Huber
E. Gladyshev
E. Gladyshev
Darryl Green
Andreas Huber
Johan Nilsson
Darryl Green
Andreas Huber
Andreas Huber
Rob Stewart
Andreas Huber
Rob Stewart
Johan Nilsson
Andreas Huber
Andreas Huber
Johan Nilsson
Johan Nilsson
Andreas Huber
Andreas Huber
Andreas Huber
Darryl Green
David Abrahams
Andreas Huber
Andreas Huber
Rob Stewart
Andreas Huber
Andreas Huber
Andreas Huber
Andreas Huber
David Abrahams
David Abrahams
David Abrahams
Andreas Huber
Andreas Huber
Darryl Green
David Bergman
David Abrahams
David Abrahams
David Abrahams
Andreas Huber
Andreas Huber
David Abrahams
Andreas Huber
Andreas Huber
Andreas Huber
Andreas Huber
Darryl Green
Andreas Huber
Robert Bell
David Abrahams
E. Gladyshev
Johan Nilsson
Jeff Flinn
Johan Nilsson
Andreas Huber
Jeff Flinn
E. Gladyshev
Andreas Huber
Andreas Huber
Iain K. Hanson
Robert Bell
David Abrahams
E. Gladyshev
Andreas Huber
Andreas Huber
David B. Held
Andreas Huber
Johan Nilsson
Johan Nilsson
Peter Dimov
Johan Nilsson
Topher Cooper
Johan Nilsson
Johan Nilsson
Andreas Huber
Robert Bell
Andreas Huber
Andreas Huber
Andreas Huber
E. Gladyshev
Andreas Huber
Andreas Huber
E. Gladyshev
E. Gladyshev
Andreas Huber
Andreas Huber
E. Gladyshev
David Abrahams
Andreas Huber
E. Gladyshev
E. Gladyshev
Rob Stewart
E. Gladyshev
E. Gladyshev
Rob Stewart
E. Gladyshev
Rob Stewart
E. Gladyshev
Andreas Huber
Andreas Huber
E. Gladyshev
Marshall Clow
Marshall Clow
E. Gladyshev
David Abrahams
Darryl Green
E. Gladyshev
Andreas Huber
Andreas Huber
Robert Bell
Darryl Green
Pavel Vozenilek
David Abrahams
Andreas Huber
David Abrahams
Gregory Colvin
Pavel Vozenilek
Andreas Huber
Robert Bell
Andreas Huber
Johan Nilsson
Andreas Huber
Andreas Huber
Johan Nilsson
Johan Nilsson
Rob Stewart
Johan Nilsson
Andreas Huber
Andreas Huber
David Abrahams
Andreas Huber
Andreas Huber
David Abrahams
Andreas Huber
Andreas Huber
Johan Nilsson
Rob Stewart
Kwee Heong Tan
David Abrahams
Andreas Huber
David Abrahams
David Abrahams
Andreas Huber
Andreas Huber
Andreas Huber
David Abrahams
Andreas Huber
John Fuller
David Abrahams
David Abrahams
Andreas Huber
Andreas Huber
Aleksey Gurtovoy
David Abrahams
David Abrahams
David Abrahams
Andreas Huber
David Abrahams
David Abrahams

Privacy Policy | Email Opt-out | Feedback | Syndication
© ActiveState Software Inc. All rights reserved