summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/ha/Membership.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/ha/Membership.cpp')
-rw-r--r--cpp/src/qpid/ha/Membership.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/cpp/src/qpid/ha/Membership.cpp b/cpp/src/qpid/ha/Membership.cpp
index af57145cc2..ddb603ca14 100644
--- a/cpp/src/qpid/ha/Membership.cpp
+++ b/cpp/src/qpid/ha/Membership.cpp
@@ -144,9 +144,19 @@ bool checkTransition(BrokerStatus from, BrokerStatus to) {
}
} // namespace
+void Membership::addCallback(UpdateCallback cb) {
+ Mutex::ScopedLock l(lock);
+ callbacks.push_back(cb);
+ cb(brokers); // Give an initial update.
+}
void Membership::update(Mutex::ScopedLock& l) {
QPID_LOG(info, "Membership: " << brokers);
+
+ // Call callbacks
+ for_each(callbacks.begin(), callbacks.end(),
+ boost::bind<void>(&UpdateCallback::operator(), _1, boost::cref(brokers)));
+
// Update managment and send update event.
BrokerStatus newStatus = getStatus(l);
Variant::List brokerList = asList(l);