diff options
Diffstat (limited to 'cpp/src/qpid/broker/TxBuffer.cpp')
-rw-r--r-- | cpp/src/qpid/broker/TxBuffer.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/cpp/src/qpid/broker/TxBuffer.cpp b/cpp/src/qpid/broker/TxBuffer.cpp index 7663cc525f..a8df4fb214 100644 --- a/cpp/src/qpid/broker/TxBuffer.cpp +++ b/cpp/src/qpid/broker/TxBuffer.cpp @@ -19,6 +19,7 @@ * */ #include "qpid/broker/TxBuffer.h" +#include "qpid/broker/TransactionObserver.h" #include "qpid/log/Statement.h" #include <boost/mem_fn.hpp> @@ -26,8 +27,11 @@ using boost::mem_fn; using namespace qpid::broker; +TxBuffer::TxBuffer() : observer(new NullTransactionObserver) {} + bool TxBuffer::prepare(TransactionContext* const ctxt) { + if (!observer->prepare()) return false; for(op_iterator i = ops.begin(); i != ops.end(); i++){ if(!(*i)->prepare(ctxt)){ return false; @@ -38,18 +42,21 @@ bool TxBuffer::prepare(TransactionContext* const ctxt) void TxBuffer::commit() { + observer->commit(); std::for_each(ops.begin(), ops.end(), mem_fn(&TxOp::commit)); ops.clear(); } void TxBuffer::rollback() { + observer->rollback(); std::for_each(ops.begin(), ops.end(), mem_fn(&TxOp::rollback)); ops.clear(); } void TxBuffer::enlist(TxOp::shared_ptr op) { + op->callObserver(observer); ops.push_back(op); } |