diff options
Diffstat (limited to 'cpp/src/qpid/broker/LinkRegistry.h')
-rw-r--r-- | cpp/src/qpid/broker/LinkRegistry.h | 58 |
1 files changed, 21 insertions, 37 deletions
diff --git a/cpp/src/qpid/broker/LinkRegistry.h b/cpp/src/qpid/broker/LinkRegistry.h index 4c97e4f9d8..753f6bfe9e 100644 --- a/cpp/src/qpid/broker/LinkRegistry.h +++ b/cpp/src/qpid/broker/LinkRegistry.h @@ -10,9 +10,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -27,7 +27,6 @@ #include "qpid/broker/MessageStore.h" #include "qpid/Address.h" #include "qpid/sys/Mutex.h" -#include "qpid/sys/Timer.h" #include "qpid/management/Manageable.h" #include <boost/shared_ptr.hpp> #include <boost/intrusive_ptr.hpp> @@ -40,40 +39,19 @@ namespace broker { class Broker; class Connection; class LinkRegistry { - - // Declare a timer task to manage the establishment of link connections and the - // re-establishment of lost link connections. - struct Periodic : public sys::TimerTask - { - LinkRegistry& links; - - Periodic(LinkRegistry& links); - virtual ~Periodic() {}; - void fire(); - }; - typedef std::map<std::string, boost::shared_ptr<Link> > LinkMap; typedef std::map<std::string, Bridge::shared_ptr> BridgeMap; - typedef std::map<std::string, Address> AddressMap; LinkMap links; - LinkMap linksToDestroy; BridgeMap bridges; - BridgeMap bridgesToDestroy; - AddressMap reMappings; qpid::sys::Mutex lock; Broker* broker; - sys::Timer* timer; - boost::intrusive_ptr<qpid::sys::TimerTask> maintenanceTask; management::Manageable* parent; MessageStore* store; bool passive; - bool passiveChanged; std::string realm; - void periodicMaintenance (); - bool updateAddress(const std::string& oldKey, const Address& newAddress); boost::shared_ptr<Link> findLink(const std::string& key); static std::string createKey(const Address& address); static std::string createKey(const std::string& host, uint16_t port); @@ -84,28 +62,32 @@ namespace broker { ~LinkRegistry(); std::pair<boost::shared_ptr<Link>, bool> - declare(std::string& host, + declare(const std::string& host, uint16_t port, - std::string& transport, + const std::string& transport, bool durable, - std::string& authMechanism, - std::string& username, - std::string& password); + const std::string& authMechanism, + const std::string& username, + const std::string& password); + std::pair<Bridge::shared_ptr, bool> - declare(std::string& host, + declare(const std::string& host, uint16_t port, bool durable, - std::string& src, - std::string& dest, - std::string& key, + const std::string& src, + const std::string& dest, + const std::string& key, bool isQueue, bool isLocal, - std::string& id, - std::string& excludes, + const std::string& id, + const std::string& excludes, bool dynamic, - uint16_t sync); + uint16_t sync, + Bridge::InitializeCallback=0 + ); void destroy(const std::string& host, const uint16_t port); + void destroy(const std::string& host, const uint16_t port, const std::string& src, @@ -128,6 +110,7 @@ namespace broker { MessageStore* getStore() const; void notifyConnection (const std::string& key, Connection* c); + void notifyOpened (const std::string& key); void notifyClosed (const std::string& key); void notifyConnectionForced (const std::string& key, const std::string& text); std::string getAuthMechanism (const std::string& key); @@ -142,6 +125,7 @@ namespace broker { * Called by links failing over to new address */ void changeAddress(const Address& oldAddress, const Address& newAddress); + /** * Called to alter passive state. In passive state the links * and bridges managed by a link registry will be recorded and @@ -149,8 +133,8 @@ namespace broker { * bridges won't therefore pull or push any messages. */ void setPassive(bool); + bool isPassive() { return passive; } - /** Iterate over each link in the registry. Used for cluster updates. */ void eachLink(boost::function<void(boost::shared_ptr<Link>)> f); /** Iterate over each bridge in the registry. Used for cluster updates. */ |