summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/Broker.cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2007-07-19 21:52:24 +0000
committerAlan Conway <aconway@apache.org>2007-07-19 21:52:24 +0000
commitcb566519d58ded6704507fa5530bf901e620edf6 (patch)
treeab4b29ddd0ad2b5e9015647e379bede84163b13e /cpp/src/qpid/broker/Broker.cpp
parent3f900af77d5f781431dc25e307974e0fc27aa561 (diff)
downloadqpid-python-cb566519d58ded6704507fa5530bf901e620edf6.tar.gz
* Summary:
- Connect cluster handlers into broker handler chains. - Progress on wiring replication. * src/tests/cluster.mk: Temporarily disabled Cluster test. * src/tests/Cluster.h, cpp, Cluster_child.cpp: Updated to use UUIDs. * src/qpidd.cpp: - Load optional libs (cluster) - Include plugin config in options.parse. * src/qpid/cluster/SessionManager.h: - Create sessions, update handler chains (as HandlerUpdater) - Handle frames from cluster. * src/qpid/cluster/ClusterPlugin.h, .cpp: - renamed from ClusterPluginProvider - Create and connect Cluster and SessionManager. - Register SessionManager as HandlerUpdater. * src/qpid/cluster/Cluster.h, .cpp: Refactor as SessionFrameHandler. * src/qpid/broker/Connection.cpp: Apply HandlerUpdaters. * src/qpid/broker/Broker.h, .cpp: - Initialize plugins - Apply HandlerUpdaters * src/qpid/Plugin.h, .cpp: Simplified plugin framework. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@557788 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/Broker.cpp')
-rw-r--r--cpp/src/qpid/broker/Broker.cpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/cpp/src/qpid/broker/Broker.cpp b/cpp/src/qpid/broker/Broker.cpp
index 9c8e98ec9a..86342b3c43 100644
--- a/cpp/src/qpid/broker/Broker.cpp
+++ b/cpp/src/qpid/broker/Broker.cpp
@@ -20,7 +20,6 @@
*/
#include "Broker.h"
-
#include "Connection.h"
#include "DirectExchange.h"
#include "FanOutExchange.h"
@@ -40,11 +39,14 @@
#include "qpid/sys/ConnectionInputHandlerFactory.h"
#include "qpid/sys/TimeoutHandler.h"
+#include <boost/bind.hpp>
+
#include <iostream>
#include <memory>
using qpid::sys::Acceptor;
using qpid::framing::HandlerUpdater;
+using qpid::framing::FrameHandler;
namespace qpid {
namespace broker {
@@ -98,6 +100,12 @@ Broker::Broker(const Broker::Options& conf) :
store->recover(recoverer);
}
+ // Initialize plugins
+ const Plugin::Plugins& plugins=Plugin::getPlugins();
+ for (Plugin::Plugins::const_iterator i = plugins.begin();
+ i != plugins.end();
+ i++)
+ (*i)->initialize(*this);
}
@@ -149,13 +157,14 @@ Acceptor& Broker::getAcceptor() const {
return *acceptor;
}
-void Broker::use(const shared_ptr<Plugin>& plugin) {
- shared_ptr<HandlerUpdater> updater=
- dynamic_pointer_cast<HandlerUpdater>(plugin);
- if (updater) {
- QPID_LOG(critical, "HandlerUpdater plugins not implemented");
- // FIXME aconway 2007-06-28: hook into Connections.
- }
+void Broker::add(const shared_ptr<HandlerUpdater>& updater) {
+ QPID_LOG(debug, "Broker added HandlerUpdater");
+ handlerUpdaters.push_back(updater);
+}
+
+void Broker::update(FrameHandler::Chains& chains) {
+ for_each(handlerUpdaters.begin(), handlerUpdaters.end(),
+ boost::bind(&HandlerUpdater::update, _1, chains));
}
}} // namespace qpid::broker