summaryrefslogtreecommitdiff
path: root/qpid/cpp/src
diff options
context:
space:
mode:
authorAndrew Stitcher <astitcher@apache.org>2014-01-31 21:05:26 +0000
committerAndrew Stitcher <astitcher@apache.org>2014-01-31 21:05:26 +0000
commitf0e4a6536341cacdc4a1e7e4ce3f33f878cd1014 (patch)
treebabb57ad3ebd621f3ff8cbe2202534412e85de71 /qpid/cpp/src
parente39e8353b5321a8ddd9a19054e83822a7b629684 (diff)
downloadqpid-python-f0e4a6536341cacdc4a1e7e4ce3f33f878cd1014.tar.gz
QPID-5485: If no directory for paging file is enabled print warning (as if
memory mapped files were not supported) but still create a queue. - Also improve DataDir const correctness. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1563256 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
-rw-r--r--qpid/cpp/src/qpid/DataDir.cpp2
-rw-r--r--qpid/cpp/src/qpid/DataDir.h6
-rw-r--r--qpid/cpp/src/qpid/broker/Broker.cpp5
-rw-r--r--qpid/cpp/src/qpid/broker/Broker.h4
-rw-r--r--qpid/cpp/src/qpid/broker/QueueFactory.cpp4
-rw-r--r--qpid/cpp/src/qpid/legacystore/StorePlugin.cpp2
-rw-r--r--qpid/cpp/src/qpid/linearstore/StorePlugin.cpp2
-rw-r--r--qpid/cpp/src/qpid/store/ms-clfs/MSSqlClfsProvider.cpp2
8 files changed, 12 insertions, 15 deletions
diff --git a/qpid/cpp/src/qpid/DataDir.cpp b/qpid/cpp/src/qpid/DataDir.cpp
index cfdb536d2c..546df3dabd 100644
--- a/qpid/cpp/src/qpid/DataDir.cpp
+++ b/qpid/cpp/src/qpid/DataDir.cpp
@@ -26,7 +26,7 @@
namespace qpid {
-DataDir::DataDir (std::string path) :
+DataDir::DataDir (const std::string& path) :
enabled (!path.empty ()),
dirPath (path)
{
diff --git a/qpid/cpp/src/qpid/DataDir.h b/qpid/cpp/src/qpid/DataDir.h
index 828299f3ba..ec73d28796 100644
--- a/qpid/cpp/src/qpid/DataDir.h
+++ b/qpid/cpp/src/qpid/DataDir.h
@@ -42,11 +42,11 @@ class DataDir
public:
- QPID_COMMON_EXTERN DataDir (std::string path);
+ QPID_COMMON_EXTERN DataDir (const std::string& path);
QPID_COMMON_EXTERN ~DataDir ();
- bool isEnabled() { return enabled; }
- const std::string& getPath() { return dirPath; }
+ bool isEnabled() const { return enabled; }
+ const std::string& getPath() const { return dirPath; }
};
} // namespace qpid
diff --git a/qpid/cpp/src/qpid/broker/Broker.cpp b/qpid/cpp/src/qpid/broker/Broker.cpp
index 7367336aff..73910ec6c4 100644
--- a/qpid/cpp/src/qpid/broker/Broker.cpp
+++ b/qpid/cpp/src/qpid/broker/Broker.cpp
@@ -387,11 +387,6 @@ Broker::Broker(const Broker::Options& conf) :
}
}
-std::string Broker::getPagingDirectoryPath()
-{
- return pagingDir.getPath();
-}
-
void Broker::declareStandardExchange(const std::string& name, const std::string& type)
{
bool storeEnabled = store.get() != NULL;
diff --git a/qpid/cpp/src/qpid/broker/Broker.h b/qpid/cpp/src/qpid/broker/Broker.h
index 5923d6c0e5..13679bd623 100644
--- a/qpid/cpp/src/qpid/broker/Broker.h
+++ b/qpid/cpp/src/qpid/broker/Broker.h
@@ -238,11 +238,11 @@ class Broker : public sys::Runnable, public Plugin::Target,
ExchangeRegistry& getExchanges() { return exchanges; }
LinkRegistry& getLinks() { return links; }
DtxManager& getDtxManager() { return dtxManager; }
- DataDir& getDataDir() { return dataDir; }
+ const DataDir& getDataDir() { return dataDir; }
+ const DataDir& getPagingDir() { return pagingDir; }
Options& getOptions() { return config; }
ProtocolRegistry& getProtocolRegistry() { return protocolRegistry; }
ObjectFactoryRegistry& getObjectFactoryRegistry() { return objectFactory; }
- std::string getPagingDirectoryPath();
void setExpiryPolicy(const boost::intrusive_ptr<ExpiryPolicy>& e) { expiryPolicy = e; }
boost::intrusive_ptr<ExpiryPolicy> getExpiryPolicy() { return expiryPolicy; }
diff --git a/qpid/cpp/src/qpid/broker/QueueFactory.cpp b/qpid/cpp/src/qpid/broker/QueueFactory.cpp
index e60349edfb..08988ed4ac 100644
--- a/qpid/cpp/src/qpid/broker/QueueFactory.cpp
+++ b/qpid/cpp/src/qpid/broker/QueueFactory.cpp
@@ -76,8 +76,10 @@ boost::shared_ptr<Queue> QueueFactory::create(const std::string& name, const Que
QPID_LOG(warning, "Cannot create paged queue without broker context");
} else if (!qpid::sys::MemoryMappedFile::isSupported()) {
QPID_LOG(warning, "Cannot create paged queue; memory mapped file support not available on this platform");
+ } else if ( !broker->getPagingDir().isEnabled() ) {
+ QPID_LOG(warning, "Cannot create paged queue; no paging directory enabled");
} else {
- queue->messages = std::auto_ptr<Messages>(new PagedQueue(name, broker->getPagingDirectoryPath(),
+ queue->messages = std::auto_ptr<Messages>(new PagedQueue(name, broker->getPagingDir().getPath(),
settings.maxPages ? settings.maxPages : 4,
settings.pageFactor ? settings.pageFactor : 1,
broker->getProtocolRegistry(), broker->getExpiryPolicy()));
diff --git a/qpid/cpp/src/qpid/legacystore/StorePlugin.cpp b/qpid/cpp/src/qpid/legacystore/StorePlugin.cpp
index f9b77ce02c..5cba10d0f9 100644
--- a/qpid/cpp/src/qpid/legacystore/StorePlugin.cpp
+++ b/qpid/cpp/src/qpid/legacystore/StorePlugin.cpp
@@ -45,7 +45,7 @@ struct StorePlugin : public Plugin {
Broker* broker = dynamic_cast<Broker*>(&target);
if (!broker) return;
store.reset(new MessageStoreImpl(broker));
- DataDir& dataDir = broker->getDataDir ();
+ const DataDir& dataDir = broker->getDataDir ();
if (options.storeDir.empty ())
{
if (!dataDir.isEnabled ())
diff --git a/qpid/cpp/src/qpid/linearstore/StorePlugin.cpp b/qpid/cpp/src/qpid/linearstore/StorePlugin.cpp
index 6dfb2056bf..d64b44b5e3 100644
--- a/qpid/cpp/src/qpid/linearstore/StorePlugin.cpp
+++ b/qpid/cpp/src/qpid/linearstore/StorePlugin.cpp
@@ -46,7 +46,7 @@ struct StorePlugin : public Plugin {
Broker* broker = dynamic_cast<Broker*>(&target);
if (!broker) return;
store.reset(new MessageStoreImpl(broker));
- DataDir& dataDir = broker->getDataDir ();
+ const DataDir& dataDir = broker->getDataDir ();
if (options.storeDir.empty ())
{
if (!dataDir.isEnabled ())
diff --git a/qpid/cpp/src/qpid/store/ms-clfs/MSSqlClfsProvider.cpp b/qpid/cpp/src/qpid/store/ms-clfs/MSSqlClfsProvider.cpp
index 512e71230b..5ff24e7d33 100644
--- a/qpid/cpp/src/qpid/store/ms-clfs/MSSqlClfsProvider.cpp
+++ b/qpid/cpp/src/qpid/store/ms-clfs/MSSqlClfsProvider.cpp
@@ -370,7 +370,7 @@ MSSqlClfsProvider::earlyInitialize(Plugin::Target &target)
// Check the store dir option; if not specified, need to
// grab the broker's data dir.
if (options.storeDir.empty()) {
- DataDir& dir = store->getBroker()->getDataDir();
+ const DataDir& dir = store->getBroker()->getDataDir();
if (dir.isEnabled()) {
options.storeDir = dir.getPath();
}