diff options
Diffstat (limited to 'cpp/src/IceStorm/Service.cpp')
-rw-r--r-- | cpp/src/IceStorm/Service.cpp | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/cpp/src/IceStorm/Service.cpp b/cpp/src/IceStorm/Service.cpp index 02423174323..dc722a2ba6d 100644 --- a/cpp/src/IceStorm/Service.cpp +++ b/cpp/src/IceStorm/Service.cpp @@ -35,7 +35,7 @@ using namespace IceStorm; using namespace IceStormInternal; using namespace IceStormElection; -namespace IceStormInternal +namespace { class ServiceI : public IceStormInternal::Service @@ -70,6 +70,25 @@ private: InstancePtr _instance; }; +class FinderI : public IceStorm::Finder +{ +public: + + FinderI(const TopicManagerPrx& topicManager) : _topicManager(topicManager) + { + } + + virtual TopicManagerPrx + getTopicManager(const Ice::Current&) + { + return _topicManager; + } + +private: + + const TopicManagerPrx _topicManager; +}; + } extern "C" @@ -372,6 +391,9 @@ ServiceI::start( throw e; } } + + topicAdapter->add(new FinderI(TopicManagerPrx::uncheckedCast(topicAdapter->createProxy(topicManagerId))), + communicator->stringToIdentity("IceStorm/Finder")); topicAdapter->activate(); publishAdapter->activate(); @@ -379,11 +401,11 @@ ServiceI::start( void ServiceI::start(const CommunicatorPtr& communicator, - const ObjectAdapterPtr& topicAdapter, - const ObjectAdapterPtr& publishAdapter, - const string& name, - const Ice::Identity& id, - const string& /*dbEnv*/) + const ObjectAdapterPtr& topicAdapter, + const ObjectAdapterPtr& publishAdapter, + const string& name, + const Ice::Identity& id, + const string& /*dbEnv*/) { // // For IceGrid we don't validate the properties as all sorts of |