diff options
| author | Gordon Sim <gsim@apache.org> | 2008-07-08 14:53:51 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2008-07-08 14:53:51 +0000 |
| commit | 50d4782e2f3676723a2df5bf6a420d45fb55467d (patch) | |
| tree | 8ef8248cf98c3e0ecfeffd78031768b5b812c579 /cpp/src/qpid/broker/Queue.h | |
| parent | 2c2c79d8d6321cf3cf05018f6ee92a1cf9627934 (diff) | |
| download | qpid-python-50d4782e2f3676723a2df5bf6a420d45fb55467d.tar.gz | |
* release message lock when notifying queue listeners
* take copy of listeners
* remove unused functionality
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@674848 13f79535-47bb-0310-9956-ffa450edef68
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&); |
