TopicManagerI.h
Go to the documentation of this file.
1 // **********************************************************************
2 //
3 // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4 //
5 // This copy of Ice is licensed to you under the terms described in the
6 // ICE_LICENSE file included in this distribution.
7 //
8 // **********************************************************************
9 
10 #ifndef TOPIC_MANAGER_I_H
11 #define TOPIC_MANAGER_I_H
12 
13 #include <IceStorm/Election.h>
14 #include <IceStorm/IceStorm.h>
16 #include <IceStorm/Replica.h>
17 #include <IceStorm/Util.h>
18 #include <IceUtil/RecMutex.h>
19 
20 namespace IceStorm
21 {
22 
23  //
24  // Forward declarations.
25  //
26  class PersistentInstance;
28 
29  class TopicImpl;
31 
32  //
33  // TopicManager implementation.
34  //
38  public IceUtil::RecMutex
39  {
40  public:
42 
43  // TopicManager methods.
44  TopicPrx create(const std::string&);
45  TopicPrx retrieve(const std::string&) const;
46  TopicDict retrieveAll() const;
47 
48  // Observer methods.
51  void observerCreateTopic(const IceStormElection::LogUpdate&, const std::string&);
52  void observerDestroyTopic(const IceStormElection::LogUpdate&, const std::string&);
54  const std::string&,
57  const std::string&,
58  const Ice::IdentitySeq&);
59 
60  // Sync methods.
62 
63  // Replica methods.
65  virtual void sync(const Ice::ObjectPrx&);
66  virtual void initMaster(const std::set<IceStormElection::GroupNodeInfo>&,
68  virtual Ice::ObjectPrx getObserver() const;
69  virtual Ice::ObjectPrx getSync() const;
70 
71  void reap();
72 
73  void shutdown();
74 
75  Ice::ObjectPtr getServant() const;
76 
77  private:
78  void updateTopicObservers();
79  void updateSubscriberObservers();
80 
81  TopicPrx
82  installTopic(const std::string&,
83  const Ice::Identity&,
84  bool,
86 
87  const PersistentInstancePtr _instance;
88 
89  std::map<std::string, TopicImplPtr> _topics;
90 
91  Ice::ObjectPtr _managerImpl;
92  Ice::ObjectPtr _observerImpl;
93  Ice::ObjectPrx _observer;
94  Ice::ObjectPtr _syncImpl;
95  Ice::ObjectPrx _sync;
96 
97  LLUMap _lluMap;
98  SubscriberMap _subscriberMap;
99  };
100 
102 
103 } // End namespace IceStorm
104 
105 #endif
Instrumentation.h
IceStormElection::Replica
Definition: Replica.h:38
IceStorm::SubscriberRecordSeq
::std::vector<::IceStorm::SubscriberRecord > SubscriberRecordSeq
Definition: SubscriberRecord.h:244
IceStorm
Definition: DBTypes.ice:22
IceStorm::TopicManagerImpl::reap
void reap()
Definition: TopicManagerI.cpp:723
IceStorm::TopicManagerImpl::shutdown
void shutdown()
Definition: TopicManagerI.cpp:742
IceStorm::TopicManagerImplPtr
IceUtil::Handle< TopicManagerImpl > TopicManagerImplPtr
Definition: TopicManagerI.h:101
IceStorm::Instrumentation::ObserverUpdater
The ObserverUpdater interface is implemented by IceStorm and an instance of this interface is provide...
Definition: Instrumentation.h:275
Replica.h
IceStorm::TopicManagerImpl::getServant
Ice::ObjectPtr getServant() const
Definition: TopicManagerI.cpp:758
IceStormElection::LogUpdate
A struct used for marking the last log update.
Definition: LLURecord.h:102
IceStorm::TopicManagerImpl::getSync
virtual Ice::ObjectPrx getSync() const
Definition: TopicManagerI.cpp:717
IceStorm::TopicImplPtr
IceUtil::Handle< TopicImpl > TopicImplPtr
Definition: TopicI.h:110
IceStorm::TopicManagerImpl::getContent
void getContent(IceStormElection::LogUpdate &, IceStormElection::TopicContentSeq &)
Definition: TopicManagerI.cpp:608
IceStorm::TopicManagerImpl::initMaster
virtual void initMaster(const std::set< IceStormElection::GroupNodeInfo > &, const IceStormElection::LogUpdate &)
Definition: TopicManagerI.cpp:665
Util.h
IceStorm::SubscriberRecord
Used to store persistent information for persistent subscribers.
Definition: SubscriberRecord.h:233
IceStormElection::TopicContentSeq
::std::vector<::IceStormElection::TopicContent > TopicContentSeq
A sequence of topic content.
Definition: Election.h:1225
GfxTL::Identity
void Identity(MatrixXX< N, N, T > *a)
Definition: MatrixXX.h:570
IceStorm::TopicManagerImpl::sync
virtual void sync(const Ice::ObjectPrx &)
Definition: TopicManagerI.cpp:653
IceStorm::TopicManagerImpl::observerInit
void observerInit(const IceStormElection::LogUpdate &, const IceStormElection::TopicContentSeq &)
Definition: TopicManagerI.cpp:397
IceStorm::TopicManagerImpl::observerAddSubscriber
void observerAddSubscriber(const IceStormElection::LogUpdate &, const std::string &, const IceStorm::SubscriberRecord &)
Definition: TopicManagerI.cpp:568
IceStorm::TopicManagerImpl::getObserver
virtual Ice::ObjectPrx getObserver() const
Definition: TopicManagerI.cpp:711
IceDB::Dbi< std::string, IceStormElection::LogUpdate, IceDB::IceContext, Ice::OutputStream >
IceStorm::TopicManagerImpl
Definition: TopicManagerI.h:35
IceStorm::TopicManagerImpl::observerDestroyTopic
void observerDestroyTopic(const IceStormElection::LogUpdate &, const std::string &)
Definition: TopicManagerI.cpp:553
IceStorm::TopicManagerImpl::TopicManagerImpl
TopicManagerImpl(const PersistentInstancePtr &)
Definition: TopicManagerI.cpp:243
IceStorm::TopicManagerImpl::retrieve
TopicPrx retrieve(const std::string &) const
Definition: TopicManagerI.cpp:361
Election.h
IceUtil::Handle
Definition: forward_declarations.h:30
IceStorm::TopicManagerImpl::observerCreateTopic
void observerCreateTopic(const IceStormElection::LogUpdate &, const std::string &)
Definition: TopicManagerI.cpp:518
IceInternal::ProxyHandle<::IceProxy::IceStorm::Topic >
armarx::aron::type::ObjectPtr
std::shared_ptr< Object > ObjectPtr
Definition: Object.h:36
IceStorm::TopicManagerImpl::observerRemoveSubscriber
void observerRemoveSubscriber(const IceStormElection::LogUpdate &, const std::string &, const Ice::IdentitySeq &)
Definition: TopicManagerI.cpp:588
IceStorm::TopicManagerImpl::retrieveAll
TopicDict retrieveAll() const
Definition: TopicManagerI.cpp:380
IceStorm::TopicManagerImpl::create
TopicPrx create(const std::string &)
Definition: TopicManagerI.cpp:318
IceStorm::PersistentInstancePtr
IceUtil::Handle< PersistentInstance > PersistentInstancePtr
Definition: Instance.h:172
IceStorm::TopicManagerImpl::getLastLogUpdate
virtual IceStormElection::LogUpdate getLastLogUpdate() const
Definition: TopicManagerI.cpp:635