summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/TxBuffer.cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2006-11-07 16:58:31 +0000
committerGordon Sim <gsim@apache.org>2006-11-07 16:58:31 +0000
commitfd69619118c808b2c30af3dbb4a9882f192237b3 (patch)
tree21e6fd2171eab3a028ff8c9bbb847a24b6410536 /cpp/src/qpid/broker/TxBuffer.cpp
parent0b03d292bad662cf4e65017bf944937b54b6933d (diff)
downloadqpid-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.cpp20
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);
}