summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/BrokerQueue.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/broker/BrokerQueue.cpp')
-rw-r--r--cpp/src/qpid/broker/BrokerQueue.cpp7
1 files changed, 2 insertions, 5 deletions
diff --git a/cpp/src/qpid/broker/BrokerQueue.cpp b/cpp/src/qpid/broker/BrokerQueue.cpp
index f11766e7ec..1473ab6288 100644
--- a/cpp/src/qpid/broker/BrokerQueue.cpp
+++ b/cpp/src/qpid/broker/BrokerQueue.cpp
@@ -36,7 +36,7 @@ using namespace qpid::sys;
using namespace qpid::framing;
using boost::format;
-Queue::Queue(const string& _name, uint32_t _autodelete,
+Queue::Queue(const string& _name, bool _autodelete,
MessageStore* const _store,
const ConnectionToken* const _owner) :
@@ -50,7 +50,6 @@ Queue::Queue(const string& _name, uint32_t _autodelete,
exclusive(0),
persistenceId(0)
{
- if(autodelete) lastUsed = now();
}
Queue::~Queue(){}
@@ -134,7 +133,6 @@ void Queue::consume(Consumer* c, bool requestExclusive){
"Exclusive access denied.") %getName());
exclusive = c;
}
- if(autodelete && consumers.empty()) lastUsed = FAR_FUTURE;
consumers.push_back(c);
}
@@ -143,7 +141,6 @@ void Queue::cancel(Consumer* c){
Consumers::iterator i = std::find(consumers.begin(), consumers.end(), c);
if (i != consumers.end())
consumers.erase(i);
- if(autodelete && consumers.empty()) lastUsed = now();
if(exclusive == c) exclusive = 0;
}
@@ -192,7 +189,7 @@ uint32_t Queue::getConsumerCount() const{
bool Queue::canAutoDelete() const{
Mutex::ScopedLock locker(lock);
- return Duration(lastUsed, now()) > autodelete;
+ return autodelete && consumers.size() == 0;
}
void Queue::enqueue(TransactionContext* ctxt, Message::shared_ptr& msg)