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
20namespace IceStorm
21{
22
23 //
24 // Forward declarations.
25 //
27 typedef IceUtil::Handle<PersistentInstance> PersistentInstancePtr;
28
29 class TopicImpl;
30 typedef IceUtil::Handle<TopicImpl> TopicImplPtr;
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
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
The ObserverUpdater interface is implemented by IceStorm and an instance of this interface is provide...
virtual Ice::ObjectPrx getSync() const
TopicPrx retrieve(const std::string &) const
void observerCreateTopic(const IceStormElection::LogUpdate &, const std::string &)
TopicPrx create(const std::string &)
virtual IceStormElection::LogUpdate getLastLogUpdate() const
TopicDict retrieveAll() const
void observerInit(const IceStormElection::LogUpdate &, const IceStormElection::TopicContentSeq &)
Ice::ObjectPtr getServant() const
virtual void sync(const Ice::ObjectPrx &)
virtual Ice::ObjectPrx getObserver() const
void getContent(IceStormElection::LogUpdate &, IceStormElection::TopicContentSeq &)
void observerDestroyTopic(const IceStormElection::LogUpdate &, const std::string &)
TopicManagerImpl(const PersistentInstancePtr &)
void observerAddSubscriber(const IceStormElection::LogUpdate &, const std::string &, const IceStorm::SubscriberRecord &)
void observerRemoveSubscriber(const IceStormElection::LogUpdate &, const std::string &, const Ice::IdentitySeq &)
virtual void initMaster(const std::set< IceStormElection::GroupNodeInfo > &, const IceStormElection::LogUpdate &)
::std::vector<::IceStormElection::TopicContent > TopicContentSeq
A sequence of topic content.
Definition Election.h:1225
IceDB::Dbi< IceStorm::SubscriberRecordKey, IceStorm::SubscriberRecord, IceDB::IceContext, Ice::OutputStream > SubscriberMap
Definition Util.h:31
::IceInternal::ProxyHandle<::IceProxy::IceStorm::Topic > TopicPrx
Definition IceManager.h:70
::std::vector<::IceStorm::SubscriberRecord > SubscriberRecordSeq
IceUtil::Handle< TopicManagerImpl > TopicManagerImplPtr
IceUtil::Handle< PersistentInstance > PersistentInstancePtr
Definition Instance.h:172
IceUtil::Handle< TopicImpl > TopicImplPtr
Definition TopicI.h:110
IceDB::Dbi< std::string, IceStormElection::LogUpdate, IceDB::IceContext, Ice::OutputStream > LLUMap
Definition Util.h:34
A struct used for marking the last log update.
Definition LLURecord.h:103
Used to store persistent information for persistent subscribers.