summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp')
-rw-r--r--cpp/src/qpid/broker/MessageStoreModule.cpp48
1 files changed, 25 insertions, 23 deletions
diff --git a/cpp/src/qpid/broker/MessageStoreModule.cpp b/cpp/src/qpid/broker/MessageStoreModule.cpp
index adb41f6094..797ac1f617 100644
--- a/cpp/src/qpid/broker/MessageStoreModule.cpp
+++ b/cpp/src/qpid/broker/MessageStoreModule.cpp
@@ -22,6 +22,9 @@
#include "MessageStoreModule.h"
#include <iostream>
+// This transfer protects against the unloading of the store lib prior to the handling of the exception
+#define TRANSFER_EXCEPTION(fn) try { fn; } catch (std::exception& e) { throw Exception(e.what()); }
+
using namespace qpid::broker;
MessageStoreModule::MessageStoreModule(const std::string& name) : store(name)
@@ -30,114 +33,113 @@ MessageStoreModule::MessageStoreModule(const std::string& name) : store(name)
bool MessageStoreModule::init(const std::string& dir, const bool async, const bool force)
{
- store->init(dir, async, force);
- return true;
+ TRANSFER_EXCEPTION(return store->init(dir, async, force));
}
void MessageStoreModule::create(PersistableQueue& queue)
{
- store->create(queue);
+ TRANSFER_EXCEPTION(store->create(queue));
}
void MessageStoreModule::destroy(PersistableQueue& queue)
{
- store->destroy(queue);
+ TRANSFER_EXCEPTION(store->destroy(queue));
}
void MessageStoreModule::create(const PersistableExchange& exchange)
{
- store->create(exchange);
+ TRANSFER_EXCEPTION(store->create(exchange));
}
void MessageStoreModule::destroy(const PersistableExchange& exchange)
{
- store->destroy(exchange);
+ TRANSFER_EXCEPTION(store->destroy(exchange));
}
void MessageStoreModule::bind(const PersistableExchange& e, const PersistableQueue& q,
const std::string& k, const framing::FieldTable& a)
{
- store->bind(e, q, k, a);
+ TRANSFER_EXCEPTION(store->bind(e, q, k, a));
}
void MessageStoreModule::unbind(const PersistableExchange& e, const PersistableQueue& q,
const std::string& k, const framing::FieldTable& a)
{
- store->unbind(e, q, k, a);
+ TRANSFER_EXCEPTION(store->unbind(e, q, k, a));
}
void MessageStoreModule::recover(RecoveryManager& registry)
{
- store->recover(registry);
+ TRANSFER_EXCEPTION(store->recover(registry));
}
void MessageStoreModule::stage( PersistableMessage& msg)
{
- store->stage(msg);
+ TRANSFER_EXCEPTION(store->stage(msg));
}
void MessageStoreModule::destroy(PersistableMessage& msg)
{
- store->destroy(msg);
+ TRANSFER_EXCEPTION(store->destroy(msg));
}
void MessageStoreModule::appendContent(const PersistableMessage& msg, const std::string& data)
{
- store->appendContent(msg, data);
+ TRANSFER_EXCEPTION(store->appendContent(msg, data));
}
void MessageStoreModule::loadContent(const qpid::broker::PersistableQueue& queue,
const PersistableMessage& msg, string& data, uint64_t offset, uint32_t length)
{
- store->loadContent(queue, msg, data, offset, length);
+ TRANSFER_EXCEPTION(store->loadContent(queue, msg, data, offset, length));
}
void MessageStoreModule::enqueue(TransactionContext* ctxt, PersistableMessage& msg, const PersistableQueue& queue)
{
- store->enqueue(ctxt, msg, queue);
+ TRANSFER_EXCEPTION(store->enqueue(ctxt, msg, queue));
}
void MessageStoreModule::dequeue(TransactionContext* ctxt, PersistableMessage& msg, const PersistableQueue& queue)
{
- store->dequeue(ctxt, msg, queue);
+ TRANSFER_EXCEPTION(store->dequeue(ctxt, msg, queue));
}
void MessageStoreModule::flush(const qpid::broker::PersistableQueue& queue)
{
- store->flush(queue);
+ TRANSFER_EXCEPTION(store->flush(queue));
}
u_int32_t MessageStoreModule::outstandingQueueAIO(const PersistableQueue& queue)
{
- return store->outstandingQueueAIO(queue);
+ TRANSFER_EXCEPTION(return store->outstandingQueueAIO(queue));
}
std::auto_ptr<TransactionContext> MessageStoreModule::begin()
{
- return store->begin();
+ TRANSFER_EXCEPTION(return store->begin());
}
std::auto_ptr<TPCTransactionContext> MessageStoreModule::begin(const std::string& xid)
{
- return store->begin(xid);
+ TRANSFER_EXCEPTION(return store->begin(xid));
}
void MessageStoreModule::prepare(TPCTransactionContext& txn)
{
- store->prepare(txn);
+ TRANSFER_EXCEPTION(store->prepare(txn));
}
void MessageStoreModule::commit(TransactionContext& ctxt)
{
- store->commit(ctxt);
+ TRANSFER_EXCEPTION(store->commit(ctxt));
}
void MessageStoreModule::abort(TransactionContext& ctxt)
{
- store->abort(ctxt);
+ TRANSFER_EXCEPTION(store->abort(ctxt));
}
void MessageStoreModule::collectPreparedXids(std::set<std::string>& xids)
{
- store->collectPreparedXids(xids);
+ TRANSFER_EXCEPTION(store->collectPreparedXids(xids));
}