summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/TxBuffer.cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2006-11-07 11:26:50 +0000
committerGordon Sim <gsim@apache.org>2006-11-07 11:26:50 +0000
commitc2a8f493b4d87c71dc04a432e686e2d9151a393f (patch)
tree1bb137e50aa711e6ead9e70e9117f04916b32b07 /cpp/src/qpid/broker/TxBuffer.cpp
parente4ec69544d05f04c64b92d85905978495c1aee77 (diff)
downloadqpid-python-c2a8f493b4d87c71dc04a432e686e2d9151a393f.tar.gz
Made passing of transaction context in message store explicit (to avoid thread local storage in case this doesn't fit with new io design).
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@472067 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/TxBuffer.cpp')
-rw-r--r--cpp/src/qpid/broker/TxBuffer.cpp18
1 files changed, 8 insertions, 10 deletions
diff --git a/cpp/src/qpid/broker/TxBuffer.cpp b/cpp/src/qpid/broker/TxBuffer.cpp
index 0529892930..fe2ea8fbb1 100644
--- a/cpp/src/qpid/broker/TxBuffer.cpp
+++ b/cpp/src/qpid/broker/TxBuffer.cpp
@@ -17,30 +17,28 @@
*/
#include "qpid/broker/TxBuffer.h"
+using std::mem_fun;
using namespace qpid::broker;
bool TxBuffer::prepare(TransactionalStore* const store){
- if(store) store->begin();
+ TransactionContext* ctxt(0);
+ if(store) ctxt = store->begin();
for(op_iterator i = ops.begin(); i < ops.end(); i++){
- if(!(*i)->prepare()){
- if(store) store->abort();
+ if(!(*i)->prepare(ctxt)){
+ if(store) store->abort(ctxt);
return false;
}
}
- if(store) store->commit();
+ if(store) store->commit(ctxt);
return true;
}
void TxBuffer::commit(){
- for(op_iterator i = ops.begin(); i < ops.end(); i++){
- (*i)->commit();
- }
+ for_each(ops.begin(), ops.end(), mem_fun(&TxOp::commit));
}
void TxBuffer::rollback(){
- for(op_iterator i = ops.begin(); i < ops.end(); i++){
- (*i)->rollback();
- }
+ for_each(ops.begin(), ops.end(), mem_fun(&TxOp::rollback));
}
void TxBuffer::enlist(TxOp* const op){