summaryrefslogtreecommitdiff
path: root/qpid/cpp/src
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2011-08-10 17:07:21 +0000
committerGordon Sim <gsim@apache.org>2011-08-10 17:07:21 +0000
commit12dcdfcc4e33b78c0f30d50a32b2943179a7a6a1 (patch)
tree12556d5fe900ccc4d3ae1ced91db0678344252a3 /qpid/cpp/src
parent62e56b06520c64927b4c12483ce2a45849bff7d7 (diff)
downloadqpid-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.cpp3
-rw-r--r--qpid/cpp/src/qpid/sys/CopyOnWriteArray.h6
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);