diff options
| author | Kim van der Riet <kpvdr@apache.org> | 2012-07-31 13:35:53 +0000 |
|---|---|---|
| committer | Kim van der Riet <kpvdr@apache.org> | 2012-07-31 13:35:53 +0000 |
| commit | 63c6598f401ac6406e5a31c602c7892b798536fc (patch) | |
| tree | 73b3c1a519ada213c9e117244aab99d2e64d4f2a /cpp/src/qpid/asyncStore/TxnHandleImpl.cpp | |
| parent | b435b07eb8fa9db484f85b39daaf43642dd623ca (diff) | |
| download | qpid-python-63c6598f401ac6406e5a31c602c7892b798536fc.tar.gz | |
QPID-3858: WIP: Durable transactions fixed
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/asyncstore@1367535 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/asyncStore/TxnHandleImpl.cpp')
| -rw-r--r-- | cpp/src/qpid/asyncStore/TxnHandleImpl.cpp | 71 |
1 files changed, 8 insertions, 63 deletions
diff --git a/cpp/src/qpid/asyncStore/TxnHandleImpl.cpp b/cpp/src/qpid/asyncStore/TxnHandleImpl.cpp index 2b343e9517..dd644b29bd 100644 --- a/cpp/src/qpid/asyncStore/TxnHandleImpl.cpp +++ b/cpp/src/qpid/asyncStore/TxnHandleImpl.cpp @@ -23,53 +23,32 @@ #include "TxnHandleImpl.h" -#include "qpid/Exception.h" -#include "qpid/broker/TxnBuffer.h" -#include "qpid/log/Statement.h" - -#include <uuid/uuid.h> - namespace qpid { namespace asyncStore { TxnHandleImpl::TxnHandleImpl() : m_tpcFlag(false), - m_asyncOpCnt(0UL), m_txnBuffer(0) -{ - createLocalXid(); -} +{} TxnHandleImpl::TxnHandleImpl(qpid::broker::TxnBuffer* tb) : m_tpcFlag(false), - m_asyncOpCnt(0UL), m_txnBuffer(tb) -{ - createLocalXid(); -} +{} -TxnHandleImpl::TxnHandleImpl(const std::string& xid) : +TxnHandleImpl::TxnHandleImpl(const std::string& xid, const bool tpcFlag) : m_xid(xid), - m_tpcFlag(!xid.empty()), - m_asyncOpCnt(0UL), + m_tpcFlag(tpcFlag), m_txnBuffer(0) -{ - if (m_xid.empty()) { - createLocalXid(); - } -} +{} TxnHandleImpl::TxnHandleImpl(const std::string& xid, + const bool tpcFlag, qpid::broker::TxnBuffer* tb) : m_xid(xid), - m_tpcFlag(!xid.empty()), - m_asyncOpCnt(0UL), + m_tpcFlag(tpcFlag), m_txnBuffer(tb) -{ - if (m_xid.empty()) { - createLocalXid(); - } -} +{} TxnHandleImpl::~TxnHandleImpl() {} @@ -86,38 +65,4 @@ TxnHandleImpl::is2pc() const return m_tpcFlag; } -void -TxnHandleImpl::incrOpCnt() -{ - qpid::sys::ScopedLock<qpid::sys::Mutex> l(m_asyncOpCntMutex); - ++m_asyncOpCnt; -} - -void -TxnHandleImpl::decrOpCnt() -{ - qpid::sys::ScopedLock<qpid::sys::Mutex> l(m_asyncOpCntMutex); - if (m_asyncOpCnt == 0UL) { - throw qpid::Exception("Transaction async operation count underflow"); - } - if (--m_asyncOpCnt == 0UL && m_txnBuffer) { - m_txnBuffer->asyncLocalCommit(); - } -} - -// private -void -TxnHandleImpl::createLocalXid() -{ - uuid_t uuid; - - // TODO: This call might not be thread safe - Valgrind's helgrind tool emits warnings for this: - ::uuid_generate_random(uuid); - - char uuidStr[37]; // 36-char uuid + trailing '\0' - ::uuid_unparse(uuid, uuidStr); - m_xid.assign(uuidStr); - QPID_LOG(debug, "Local XID created: \"" << m_xid << "\""); -} - }} // namespace qpid::asyncStore |
