diff options
| author | Gordon Sim <gsim@apache.org> | 2006-11-07 16:58:31 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2006-11-07 16:58:31 +0000 |
| commit | fd69619118c808b2c30af3dbb4a9882f192237b3 (patch) | |
| tree | 21e6fd2171eab3a028ff8c9bbb847a24b6410536 /cpp/src/qpid/broker/TxBuffer.cpp | |
| parent | 0b03d292bad662cf4e65017bf944937b54b6933d (diff) | |
| download | qpid-python-fd69619118c808b2c30af3dbb4a9882f192237b3.tar.gz | |
Modified TransactionalStore to return the txn ctxt as an auto_ptr to make ownership more obvious.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@472166 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/TxBuffer.cpp')
| -rw-r--r-- | cpp/src/qpid/broker/TxBuffer.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/cpp/src/qpid/broker/TxBuffer.cpp b/cpp/src/qpid/broker/TxBuffer.cpp index fe2ea8fbb1..920b9862b0 100644 --- a/cpp/src/qpid/broker/TxBuffer.cpp +++ b/cpp/src/qpid/broker/TxBuffer.cpp @@ -20,27 +20,31 @@ using std::mem_fun; using namespace qpid::broker; -bool TxBuffer::prepare(TransactionalStore* const store){ - TransactionContext* ctxt(0); +bool TxBuffer::prepare(TransactionalStore* const store) +{ + std::auto_ptr<TransactionContext> ctxt; if(store) ctxt = store->begin(); for(op_iterator i = ops.begin(); i < ops.end(); i++){ - if(!(*i)->prepare(ctxt)){ - if(store) store->abort(ctxt); + if(!(*i)->prepare(ctxt.get())){ + if(store) store->abort(ctxt.get()); return false; } } - if(store) store->commit(ctxt); + if(store) store->commit(ctxt.get()); return true; } -void TxBuffer::commit(){ +void TxBuffer::commit() +{ for_each(ops.begin(), ops.end(), mem_fun(&TxOp::commit)); } -void TxBuffer::rollback(){ +void TxBuffer::rollback() +{ for_each(ops.begin(), ops.end(), mem_fun(&TxOp::rollback)); } -void TxBuffer::enlist(TxOp* const op){ +void TxBuffer::enlist(TxOp* const op) +{ ops.push_back(op); } |
