// ********************************************************************** // // Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved. // // This copy of Ice is licensed to you under the terms described in the // ICE_LICENSE file included in this distribution. // // ********************************************************************** #ifndef TRANSIENT_TOPIC_MANAGER_I_H #define TRANSIENT_TOPIC_MANAGER_I_H #include namespace IceStorm { // // Forward declarations. // class Instance; typedef IceUtil::Handle InstancePtr; class TransientTopicImpl; typedef IceUtil::Handle TransientTopicImplPtr; // // TopicManager implementation. // class TransientTopicManagerImpl : public TopicManagerInternal, public IceUtil::Mutex { public: TransientTopicManagerImpl(const InstancePtr&); ~TransientTopicManagerImpl(); // TopicManager methods. virtual TopicPrx create(const std::string&, const Ice::Current&); virtual TopicPrx retrieve(const std::string&, const Ice::Current&) const; virtual TopicDict retrieveAll(const Ice::Current&) const; virtual Ice::SliceChecksumDict getSliceChecksums(const Ice::Current&) const; virtual IceStormElection::NodePrx getReplicaNode(const Ice::Current&) const; void reap(); void shutdown(); Ice::ObjectPtr getServant() const; private: const InstancePtr _instance; std::map _topics; }; typedef IceUtil::Handle TransientTopicManagerImplPtr; } // End namespace IceStorm #endif