diff options
Diffstat (limited to 'cpp/src/IceStorm/TopicManagerI.cpp')
-rw-r--r-- | cpp/src/IceStorm/TopicManagerI.cpp | 25 |
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) |