summaryrefslogtreecommitdiff
path: root/qpid/cpp/lib/broker/FanOutExchange.cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2007-03-29 22:30:48 +0000
committerAlan Conway <aconway@apache.org>2007-03-29 22:30:48 +0000
commit08aa59a733f770e6505ce861d717170aaa343329 (patch)
tree71638c30b5ea05b86146eed0b90c87c13f4a9135 /qpid/cpp/lib/broker/FanOutExchange.cpp
parentd231d58dc13bece684d1b162462f5e9d68ce9a60 (diff)
downloadqpid-python-08aa59a733f770e6505ce861d717170aaa343329.tar.gz
Fixed memory leak: removed Binding and ExchangeBinding.
These classes unbind a deleted queue from any Exchanges. But Exchanges hold shared_ptr<Queue>, so queues never deleted while the exchange exists. Moreover queue-binding form a shared_ptr cycle causing a leak. Raised QPID-438 for the remaining problem: destroyed queues are never unbound or deleted git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@523857 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/lib/broker/FanOutExchange.cpp')
-rw-r--r--qpid/cpp/lib/broker/FanOutExchange.cpp6
1 files changed, 1 insertions, 5 deletions
diff --git a/qpid/cpp/lib/broker/FanOutExchange.cpp b/qpid/cpp/lib/broker/FanOutExchange.cpp
index 48afcc20d5..b487593efd 100644
--- a/qpid/cpp/lib/broker/FanOutExchange.cpp
+++ b/qpid/cpp/lib/broker/FanOutExchange.cpp
@@ -19,7 +19,6 @@
*
*/
#include <FanOutExchange.h>
-#include <ExchangeBinding.h>
#include <algorithm>
using namespace qpid::broker;
@@ -28,13 +27,12 @@ using namespace qpid::sys;
FanOutExchange::FanOutExchange(const std::string& _name) : Exchange(_name) {}
-void FanOutExchange::bind(Queue::shared_ptr queue, const string& routingKey, const FieldTable* args){
+void FanOutExchange::bind(Queue::shared_ptr queue, const string& /*routingKey*/, const FieldTable* /*args*/){
Mutex::ScopedLock locker(lock);
// Add if not already present.
Queue::vector::iterator i = std::find(bindings.begin(), bindings.end(), queue);
if (i == bindings.end()) {
bindings.push_back(queue);
- queue->bound(new ExchangeBinding(this, queue, routingKey, args));
}
}
@@ -43,8 +41,6 @@ void FanOutExchange::unbind(Queue::shared_ptr queue, const string& /*routingKey*
Queue::vector::iterator i = std::find(bindings.begin(), bindings.end(), queue);
if (i != bindings.end()) {
bindings.erase(i);
- // TODO aconway 2006-09-14: What about the ExchangeBinding object?
- // Don't we have to verify routingKey/args match?
}
}