1 // 2 // Copyright (c) ZeroC, Inc. All rights reserved. 3 // 4 5 #ifndef TRANSIENT_TOPIC_MANAGER_I_H 6 #define TRANSIENT_TOPIC_MANAGER_I_H 7 8 #include <IceStorm/IceStormInternal.h> 9 10 namespace IceStorm 11 { 12 13 // 14 // Forward declarations. 15 // 16 class Instance; 17 typedef IceUtil::Handle<Instance> InstancePtr; 18 19 class TransientTopicImpl; 20 typedef IceUtil::Handle<TransientTopicImpl> TransientTopicImplPtr; 21 22 // 23 // TopicManager implementation. 24 // 25 class TransientTopicManagerImpl : public TopicManagerInternal, public IceUtil::Mutex 26 { 27 public: 28 29 TransientTopicManagerImpl(const InstancePtr&); 30 ~TransientTopicManagerImpl(); 31 32 // TopicManager methods. 33 virtual TopicPrx create(const std::string&, const Ice::Current&); 34 virtual TopicPrx retrieve(const std::string&, const Ice::Current&) const; 35 virtual TopicDict retrieveAll(const Ice::Current&) const; 36 virtual Ice::SliceChecksumDict getSliceChecksums(const Ice::Current&) const; 37 virtual IceStormElection::NodePrx getReplicaNode(const Ice::Current&) const; 38 39 void reap(); 40 41 void shutdown(); 42 43 Ice::ObjectPtr getServant() const; 44 45 private: 46 47 const InstancePtr _instance; 48 std::map<std::string, TransientTopicImplPtr> _topics; 49 }; 50 typedef IceUtil::Handle<TransientTopicManagerImpl> TransientTopicManagerImplPtr; 51 52 } // End namespace IceStorm 53 54 #endif 55