Boost logo

Boost :

Subject: Re: [boost] [transact] transaction language macros (was: Re: [transact] code in sandbox)
From: strasser_at_[hidden]
Date: 2010-02-19 16:40:01


2 corrections:

>> begin_transaction{
>> try{
>> //...
>> }catch(boost::transact::isolation_exception & ex){
>> // do something before retry
>> }
>> }end_transaction;
>
> if we move the __control=0; from the catch(isolation_exception &)
> clause up to the catch(...) one, the above use case seems OK.
> neither in the case that the whole transaction scope is exited by an
> exception , nor in the case that the retry-loop is continued the
> value of __control matters. it's only set to 0 for the "break out of
> retry" case.

what I wrote here is nonsense. if the user "break"s in a self-defined
catch(isolation_exception &) clause like you've shown above, the
user's loop is affected. the value of __control is set correctly. if
the user rethrows, the value doesn't matter.

>
>> As any macro in Boost.Transact must be prefixed with BOOST_TRANSACT, maybe
>> BOOST_TRANSACT_TRANSACTION/BOOST_TRANSACT_END could be more appropiated than
>> BOOST_TRANSACT_BEGIN_TRANSACTION/BOOST_TRANSACT_END_TRANSACTION
>
> I thought about that, but since there are now multiple macros I also
> wanted to #define the lower case macros without prefix, if the user
> chooses to include them.
> I'd find it slightly confusing that
>
> end_transaction
>
> is defined to
>
> BASIC_TRANSACT_END
>
> when "BASIC_TRANSACT_" is kind of the namespace of the macro.

...unless we wanted to make the keywords "begin", "retry" and "end".
I'm in favor if simple keywords, C++'s "try" and "catch" aren't very
specific either. but unfortunately "begin" and "end" are used in STL
containers.


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