diff options
| author | Gordon Sim <gsim@apache.org> | 2013-11-12 16:03:20 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2013-11-12 16:03:20 +0000 |
| commit | 65547070fe449b061ee848874cbb64a7736d646d (patch) | |
| tree | 60138c6b4cc09afcf53be3dee998a1b66452fdbb /qpid/cpp/src | |
| parent | 785bfe3e9a9e6afe5494e48d02be2665dc599bb8 (diff) | |
| download | qpid-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.cpp | 17 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/broker/Broker.cpp | 10 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/broker/Broker.h | 3 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/broker/QueueFactory.cpp | 2 |
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())); |
