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