Boost logo

Boost :

Subject: [boost] [transact] code in sandbox
From: strasser_at_[hidden]
Date: 2010-02-09 08:54:49


Hi,

I haven't had much time lately, and that's not going to change to next
couple of weeks, so I've uploaded what I have so far to the sandbox:

https://svn.boost.org/svn/boost/sandbox/transaction/boost/transact/

what's new:

*** basic_transaction_manager:
  - now supports all kinds of combinations of commits, like we've
discussed, including one-phase/transient two-phase, persistent
two-phase. no logging/recovery yet.
  - lazy and non-lazy transaction construction, user-configurable

*** simple_transaction_manager:
a transaction manager supporting only one resource.
basic_tranaction_manager includes a lot of MPL/fusion and the logging
infrastrucure, none of which is needed for only one resource.
this is intended to be the default transaction manager when one of our
libraries is used on its own.

*** logging infrastructure:
to be used by basic_transaction_manager for its distributed
transaction log, and optionally by resource managers that need logging
(so it is part of the public interface!)

  - olog_files: maintaining log files without knowing its contents,
manual log rolling
  - otransaction_log_files: same as olog_files, but automatic log
rolling based on transactions
  - olog: writes to olog_files, aware of log entries
  - olog_buffer: same interface as olog, but buffers log entries
locally and only accesses the log when the internal buffer overflows.
  - TODO: ilog_files/ilog to read/recover from logs. code is there,
but not migrated to "transact".
  - TODO: interleaved_ologs/..., providing multiple olog interfaces so
different resource managers can share a log, as we've discussed.

*** new syntax for transaction scopes:
syntax changed from:
atomic{
   ...
}retry;

to

do atomic{

}commit();

I prefer that syntax because it resembles the do{}while(...) syntax.
downside is that it conflicts with transaction::commit() if the user
chooses to define BOOST_TRANSACT_COMMIT to "commit" (as is done above).

*** TODO object_access
not migrated to "transact" yet. utility functions for resource
managers to serialize/clone/compare/... objects.

regards,

Stefan


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