diff options
| author | Gordon Sim <gsim@apache.org> | 2011-08-10 17:07:21 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2011-08-10 17:07:21 +0000 |
| commit | 12dcdfcc4e33b78c0f30d50a32b2943179a7a6a1 (patch) | |
| tree | 12556d5fe900ccc4d3ae1ced91db0678344252a3 /qpid/cpp/src | |
| parent | 62e56b06520c64927b4c12483ce2a45849bff7d7 (diff) | |
| download | qpid-python-12dcdfcc4e33b78c0f30d50a32b2943179a7a6a1.tar.gz | |
QPID-3403: Remove empty binding list from map
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1156266 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
| -rw-r--r-- | qpid/cpp/src/qpid/broker/DirectExchange.cpp | 3 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/sys/CopyOnWriteArray.h | 6 |
2 files changed, 9 insertions, 0 deletions
diff --git a/qpid/cpp/src/qpid/broker/DirectExchange.cpp b/qpid/cpp/src/qpid/broker/DirectExchange.cpp index 060f80f60d..5591539853 100644 --- a/qpid/cpp/src/qpid/broker/DirectExchange.cpp +++ b/qpid/cpp/src/qpid/broker/DirectExchange.cpp @@ -139,6 +139,9 @@ bool DirectExchange::unbind(Queue::shared_ptr queue, const string& routingKey, c if (mgmtExchange != 0) { mgmtExchange->dec_bindingCount(); } + if (bk.queues.empty()) { + bindings.erase(routingKey); + } } else { return false; } diff --git a/qpid/cpp/src/qpid/sys/CopyOnWriteArray.h b/qpid/cpp/src/qpid/sys/CopyOnWriteArray.h index 45a231dfd8..1e325c0d3a 100644 --- a/qpid/cpp/src/qpid/sys/CopyOnWriteArray.h +++ b/qpid/cpp/src/qpid/sys/CopyOnWriteArray.h @@ -43,6 +43,12 @@ public: CopyOnWriteArray() {} CopyOnWriteArray(const CopyOnWriteArray& c) : array(c.array) {} + bool empty() + { + Mutex::ScopedLock l(lock); + return array->empty(); + } + void add(T& t) { Mutex::ScopedLock l(lock); |
