summaryrefslogtreecommitdiff
path: root/cpp/src/IceStorm/TopicManagerI.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2012-09-11 13:02:32 +0200
committerBenoit Foucher <benoit@zeroc.com>2012-09-11 13:02:32 +0200
commitcedcb5c1047b94890c80a2d71afb808898233b9b (patch)
tree637b78cd06171738a3300043b0af43b43d17b0dc /cpp/src/IceStorm/TopicManagerI.cpp
parentMerge remote-tracking branch 'origin/encoding11' into withoutsync (diff)
downloadice-cedcb5c1047b94890c80a2d71afb808898233b9b.tar.bz2
ice-cedcb5c1047b94890c80a2d71afb808898233b9b.tar.xz
ice-cedcb5c1047b94890c80a2d71afb808898233b9b.zip
Support for IceBox services MetricsAdmin and IceStorm metrics
Diffstat (limited to 'cpp/src/IceStorm/TopicManagerI.cpp')
-rw-r--r--cpp/src/IceStorm/TopicManagerI.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/cpp/src/IceStorm/TopicManagerI.cpp b/cpp/src/IceStorm/TopicManagerI.cpp
index a1756deed63..9601d004481 100644
--- a/cpp/src/IceStorm/TopicManagerI.cpp
+++ b/cpp/src/IceStorm/TopicManagerI.cpp
@@ -296,6 +296,11 @@ TopicManagerImpl::TopicManagerImpl(const InstancePtr& instance) :
{
__setNoDelete(true);
+ if(_instance->observer())
+ {
+ _instance->observer()->setObserverUpdater(this);
+ }
+
// TODO: If we want to improve the performance of the
// non-replicated case we could allocate a null-topic manager impl
// here.
@@ -861,6 +866,26 @@ TopicManagerImpl::getServant() const
return _managerImpl;
}
+void
+TopicManagerImpl::updateTopicObservers()
+{
+ Lock sync(*this);
+ for(map<string, TopicImplPtr>::const_iterator p = _topics.begin(); p != _topics.end(); ++p)
+ {
+ p->second->updateObserver();
+ }
+}
+
+void
+TopicManagerImpl::updateSubscriberObservers()
+{
+ Lock sync(*this);
+ for(map<string, TopicImplPtr>::const_iterator p = _topics.begin(); p != _topics.end(); ++p)
+ {
+ p->second->updateSubscriberObservers();
+ }
+}
+
TopicPrx
TopicManagerImpl::installTopic(const string& name, const Ice::Identity& id, bool create,
const IceStorm::SubscriberRecordSeq& subscribers)