diff options
| author | Gordon Sim <gsim@apache.org> | 2006-11-07 11:26:50 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2006-11-07 11:26:50 +0000 |
| commit | c2a8f493b4d87c71dc04a432e686e2d9151a393f (patch) | |
| tree | 1bb137e50aa711e6ead9e70e9117f04916b32b07 /cpp/src/qpid/broker/TxBuffer.cpp | |
| parent | e4ec69544d05f04c64b92d85905978495c1aee77 (diff) | |
| download | qpid-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.cpp | 18 |
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){ |
