diff options
Diffstat (limited to 'cpp/src/qpid/ha/Membership.cpp')
| -rw-r--r-- | cpp/src/qpid/ha/Membership.cpp | 10 |
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); |
