diff options
| author | Gordon Sim <gsim@apache.org> | 2007-04-19 17:56:21 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2007-04-19 17:56:21 +0000 |
| commit | b1ad015fe2670bc3e5471c5e350e243cca948dcf (patch) | |
| tree | cbbae911b59a34f7cbe998609ca9d14f8984ca37 /cpp/src/qpid/broker/TxBuffer.cpp | |
| parent | e7cc3594288f5a6ed6c6565e34413823f5b8e2d8 (diff) | |
| download | qpid-python-b1ad015fe2670bc3e5471c5e350e243cca948dcf.tar.gz | |
Some dtx related updates.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@530500 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/TxBuffer.cpp')
| -rw-r--r-- | cpp/src/qpid/broker/TxBuffer.cpp | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/cpp/src/qpid/broker/TxBuffer.cpp b/cpp/src/qpid/broker/TxBuffer.cpp index c526c88c25..5b5b00e929 100644 --- a/cpp/src/qpid/broker/TxBuffer.cpp +++ b/cpp/src/qpid/broker/TxBuffer.cpp @@ -24,17 +24,13 @@ using boost::mem_fn; using namespace qpid::broker; -bool TxBuffer::prepare(TransactionalStore* const store) +bool TxBuffer::prepare(TransactionContext* const ctxt) { - std::auto_ptr<TransactionContext> ctxt; - if(store) ctxt = store->begin(); for(op_iterator i = ops.begin(); i < ops.end(); i++){ - if(!(*i)->prepare(ctxt.get())){ - if(store) store->abort(*ctxt); + if(!(*i)->prepare(ctxt)){ return false; } } - if(store) store->commit(*ctxt); return true; } @@ -54,3 +50,18 @@ void TxBuffer::enlist(TxOp::shared_ptr op) { ops.push_back(op); } + +bool TxBuffer::commitLocal(TransactionalStore* const store) +{ + std::auto_ptr<TransactionContext> ctxt; + if(store) ctxt = store->begin(); + if (prepare(ctxt.get())) { + if(store) store->commit(*ctxt); + commit(); + return true; + } else { + if(store) store->abort(*ctxt); + rollback(); + return false; + } +} |
