summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/qpid/ha/RemoteBackup.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/cpp/src/qpid/ha/RemoteBackup.cpp')
-rw-r--r--qpid/cpp/src/qpid/ha/RemoteBackup.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/qpid/cpp/src/qpid/ha/RemoteBackup.cpp b/qpid/cpp/src/qpid/ha/RemoteBackup.cpp
index 810913ba8f..54383750fd 100644
--- a/qpid/cpp/src/qpid/ha/RemoteBackup.cpp
+++ b/qpid/cpp/src/qpid/ha/RemoteBackup.cpp
@@ -29,6 +29,7 @@ namespace qpid {
namespace ha {
using sys::Mutex;
+using boost::bind;
RemoteBackup::RemoteBackup(const BrokerInfo& info, ReplicationTest rt, bool con) :
logPrefix("Primary remote backup "+info.getLogId()+": "),
@@ -43,7 +44,11 @@ void RemoteBackup::createGuards(broker::QueueRegistry& queues)
RemoteBackup::~RemoteBackup() { cancel(); }
-void RemoteBackup::cancel() { guards.clear(); }
+void RemoteBackup::cancel() {
+ for_each(guards.begin(), guards.end(),
+ bind(&QueueGuard::cancel, bind(&GuardMap::value_type::second, _1)));
+ guards.clear();
+}
bool RemoteBackup::isReady() {
return connected && initialQueues.empty();
@@ -70,9 +75,11 @@ namespace {
typedef std::set<boost::shared_ptr<broker::Queue> > QS;
struct QueueSetPrinter {
const QS& qs;
- QueueSetPrinter(const QS& q) : qs(q) {}
+ std::string prefix;
+ QueueSetPrinter(const std::string& p, const QS& q) : qs(q), prefix(p) {}
};
std::ostream& operator<<(std::ostream& o, const QueueSetPrinter& qp) {
+ if (!qp.qs.empty()) o << qp.prefix;
for (QS::const_iterator i = qp.qs.begin(); i != qp.qs.end(); ++i)
o << (*i)->getName() << " ";
return o;
@@ -82,7 +89,7 @@ std::ostream& operator<<(std::ostream& o, const QueueSetPrinter& qp) {
void RemoteBackup::ready(const QueuePtr& q) {
initialQueues.erase(q);
QPID_LOG(debug, logPrefix << "Queue ready: " << q->getName()
- << " remaining unready: " << QueueSetPrinter(initialQueues));
+ << QueueSetPrinter(", waiting for: ", initialQueues));
if (isReady()) QPID_LOG(debug, logPrefix << "All queues ready");
}