summaryrefslogtreecommitdiff
path: root/cpp/src/IceStorm/TopicManagerI.cpp
diff options
context:
space:
mode:
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)