summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/NullMessageStore.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/broker/NullMessageStore.cpp')
-rw-r--r--cpp/src/qpid/broker/NullMessageStore.cpp37
1 files changed, 30 insertions, 7 deletions
diff --git a/cpp/src/qpid/broker/NullMessageStore.cpp b/cpp/src/qpid/broker/NullMessageStore.cpp
index 49feb163bf..7742902cc9 100644
--- a/cpp/src/qpid/broker/NullMessageStore.cpp
+++ b/cpp/src/qpid/broker/NullMessageStore.cpp
@@ -25,6 +25,26 @@
#include <iostream>
+namespace qpid{
+namespace broker{
+
+const std::string nullxid = "";
+
+class DummyCtxt : public TPCTransactionContext
+{
+ const std::string xid;
+public:
+ DummyCtxt(const std::string& _xid) : xid(_xid) {}
+ static std::string getXid(TransactionContext& ctxt)
+ {
+ DummyCtxt* c(dynamic_cast<DummyCtxt*>(&ctxt));
+ return c ? c->xid : nullxid;
+ }
+};
+
+}
+}
+
using namespace qpid::broker;
NullMessageStore::NullMessageStore(bool _warn) : warn(_warn){}
@@ -92,24 +112,27 @@ std::auto_ptr<TransactionContext> NullMessageStore::begin()
return std::auto_ptr<TransactionContext>();
}
-std::auto_ptr<TPCTransactionContext> NullMessageStore::begin(const std::string&)
+std::auto_ptr<TPCTransactionContext> NullMessageStore::begin(const std::string& xid)
{
- return std::auto_ptr<TPCTransactionContext>();
+ return std::auto_ptr<TPCTransactionContext>(new DummyCtxt(xid));
}
-void NullMessageStore::prepare(TPCTransactionContext&)
+void NullMessageStore::prepare(TPCTransactionContext& ctxt)
{
+ prepared.insert(DummyCtxt::getXid(ctxt));
}
-void NullMessageStore::commit(TransactionContext&)
+void NullMessageStore::commit(TransactionContext& ctxt)
{
+ prepared.erase(DummyCtxt::getXid(ctxt));
}
-void NullMessageStore::abort(TransactionContext&)
+void NullMessageStore::abort(TransactionContext& ctxt)
{
+ prepared.erase(DummyCtxt::getXid(ctxt));
}
-void NullMessageStore::collectPreparedXids(std::set<string>&)
+void NullMessageStore::collectPreparedXids(std::set<string>& out)
{
-
+ out.insert(prepared.begin(), prepared.end());
}