summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/Queue.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/broker/Queue.h')
-rw-r--r--cpp/src/qpid/broker/Queue.h16
1 files changed, 13 insertions, 3 deletions
diff --git a/cpp/src/qpid/broker/Queue.h b/cpp/src/qpid/broker/Queue.h
index f56cee0f22..29c6005d60 100644
--- a/cpp/src/qpid/broker/Queue.h
+++ b/cpp/src/qpid/broker/Queue.h
@@ -38,7 +38,6 @@
#include <vector>
#include <memory>
#include <deque>
-#include <set>
#include <boost/shared_ptr.hpp>
#include <boost/enable_shared_from_this.hpp>
@@ -62,9 +61,20 @@ namespace qpid {
*/
class Queue : public boost::enable_shared_from_this<Queue>,
public PersistableQueue, public management::Manageable {
- typedef std::set<Consumer*> Listeners;
+ typedef qpid::InlineVector<Consumer*, 5> Listeners;
typedef std::deque<QueuedMessage> Messages;
+ class Guard
+ {
+ qpid::sys::Condition condition;
+ size_t count;
+ public:
+ Guard();
+ void lock();
+ void unlock();
+ void wait(sys::Mutex&);
+ };
+
const string name;
const bool autodelete;
MessageStore* store;
@@ -79,6 +89,7 @@ namespace qpid {
mutable qpid::sys::Mutex consumerLock;
mutable qpid::sys::Mutex messageLock;
mutable qpid::sys::Mutex ownershipLock;
+ Guard notifierLock;
mutable uint64_t persistenceId;
framing::FieldTable settings;
std::auto_ptr<QueuePolicy> policy;
@@ -95,7 +106,6 @@ namespace qpid {
bool getNextMessage(QueuedMessage& msg, Consumer& c);
bool consumeNextMessage(QueuedMessage& msg, Consumer& c);
bool browseNextMessage(QueuedMessage& msg, Consumer& c);
- bool canExcludeUnwanted();
void notify();
void removeListener(Consumer&);