diff options
Diffstat (limited to 'cpp/src/qpid/broker/Queue.h')
-rw-r--r-- | cpp/src/qpid/broker/Queue.h | 16 |
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&); |