summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/LinkRegistry.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/broker/LinkRegistry.h')
-rw-r--r--cpp/src/qpid/broker/LinkRegistry.h58
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. */