summaryrefslogtreecommitdiff
path: root/qpid/cpp/src
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2013-11-12 16:03:20 +0000
committerGordon Sim <gsim@apache.org>2013-11-12 16:03:20 +0000
commit65547070fe449b061ee848874cbb64a7736d646d (patch)
tree60138c6b4cc09afcf53be3dee998a1b66452fdbb /qpid/cpp/src
parent785bfe3e9a9e6afe5494e48d02be2665dc599bb8 (diff)
downloadqpid-python-65547070fe449b061ee848874cbb64a7736d646d.tar.gz
QPID-5316: add paging-dir option
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1541122 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
-rw-r--r--qpid/cpp/src/qpid/DataDir.cpp17
-rw-r--r--qpid/cpp/src/qpid/broker/Broker.cpp10
-rw-r--r--qpid/cpp/src/qpid/broker/Broker.h3
-rw-r--r--qpid/cpp/src/qpid/broker/QueueFactory.cpp2
4 files changed, 21 insertions, 11 deletions
diff --git a/qpid/cpp/src/qpid/DataDir.cpp b/qpid/cpp/src/qpid/DataDir.cpp
index ad732052ab..cfdb536d2c 100644
--- a/qpid/cpp/src/qpid/DataDir.cpp
+++ b/qpid/cpp/src/qpid/DataDir.cpp
@@ -30,18 +30,15 @@ DataDir::DataDir (std::string path) :
enabled (!path.empty ()),
dirPath (path)
{
- if (!enabled)
+ if (enabled)
{
- QPID_LOG (info, "No data directory - Disabling persistent configuration");
- return;
+ sys::FileSysDir dir(dirPath);
+ if (!dir.exists())
+ dir.mkdir();
+ std::string lockFileName(path);
+ lockFileName += "/lock";
+ lockFile = std::auto_ptr<sys::LockFile>(new sys::LockFile(lockFileName, true));
}
-
- sys::FileSysDir dir(dirPath);
- if (!dir.exists())
- dir.mkdir();
- std::string lockFileName(path);
- lockFileName += "/lock";
- lockFile = std::auto_ptr<sys::LockFile>(new sys::LockFile(lockFileName, true));
}
DataDir::~DataDir () {}
diff --git a/qpid/cpp/src/qpid/broker/Broker.cpp b/qpid/cpp/src/qpid/broker/Broker.cpp
index 1e25af3b64..9a5f05ccb2 100644
--- a/qpid/cpp/src/qpid/broker/Broker.cpp
+++ b/qpid/cpp/src/qpid/broker/Broker.cpp
@@ -163,6 +163,7 @@ Broker::Options::Options(const std::string& name) :
addOptions()
("data-dir", optValue(dataDir,"DIR"), "Directory to contain persistent data generated by the broker")
("no-data-dir", optValue(noDataDir), "Don't use a data directory. No persistent configuration will be loaded or stored")
+ ("paging-dir", optValue(pagingDir,"DIR"), "Directory in which paging files will be created for paged queues")
("port,p", optValue(port,"PORT"), "Tells the broker to listen on PORT")
("interface", optValue(listenInterfaces, "<interface name>|<interface address>"), "Which network interfaces to use to listen for incoming connections")
("listen-disable", optValue(listenDisabled, "<transport name>"), "Transports to disable listening")
@@ -216,6 +217,7 @@ Broker::Broker(const Broker::Options& conf) :
store(new NullMessageStore),
acl(0),
dataDir(conf.noDataDir ? std::string() : conf.dataDir),
+ pagingDir(conf.pagingDir),
queues(this),
exchanges(this),
links(this),
@@ -231,6 +233,9 @@ Broker::Broker(const Broker::Options& conf) :
expiryPolicy(new ExpiryPolicy),
getKnownBrokers(boost::bind(&Broker::getKnownBrokersImpl, this))
{
+ if (!dataDir.isEnabled()) {
+ QPID_LOG (info, "No data directory - Disabling persistent configuration");
+ }
try {
if (conf.enableMgmt) {
QPID_LOG(info, "Management enabled");
@@ -380,6 +385,11 @@ Broker::Broker(const Broker::Options& conf) :
}
}
+std::string Broker::getPagingDirectoryPath()
+{
+ return pagingDir.isEnabled() ? pagingDir.getPath() : dataDir.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 fe6dd6379b..4e46b71cc9 100644
--- a/qpid/cpp/src/qpid/broker/Broker.h
+++ b/qpid/cpp/src/qpid/broker/Broker.h
@@ -91,6 +91,7 @@ class Broker : public sys::Runnable, public Plugin::Target,
bool noDataDir;
std::string dataDir;
+ std::string pagingDir;
uint16_t port;
std::vector<std::string> listenInterfaces;
std::vector<std::string> listenDisabled;
@@ -175,6 +176,7 @@ class Broker : public sys::Runnable, public Plugin::Target,
std::auto_ptr<MessageStore> store;
AclModule* acl;
DataDir dataDir;
+ DataDir pagingDir;
ConnectionObservers connectionObservers;
BrokerObservers brokerObservers;
@@ -239,6 +241,7 @@ class Broker : public sys::Runnable, public Plugin::Target,
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 807026ef0d..90609c1f9d 100644
--- a/qpid/cpp/src/qpid/broker/QueueFactory.cpp
+++ b/qpid/cpp/src/qpid/broker/QueueFactory.cpp
@@ -76,7 +76,7 @@ boost::shared_ptr<Queue> QueueFactory::create(const std::string& name, const Que
} else if (!qpid::sys::MemoryMappedFile::isSupported()) {
QPID_LOG(warning, "Cannot create paged queue; memory mapped file support not available on this platform");
} else {
- queue->messages = std::auto_ptr<Messages>(new PagedQueue(name, broker->getOptions().dataDir,
+ queue->messages = std::auto_ptr<Messages>(new PagedQueue(name, broker->getPagingDirectoryPath(),
settings.maxPages ? settings.maxPages : 4,
settings.pageFactor ? settings.pageFactor : 1,
broker->getProtocolRegistry()));