Instance.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 INSTANCE_H
11#define INSTANCE_H
12
13#include <Ice/CommunicatorF.h>
14#include <Ice/ObjectAdapterF.h>
15#include <Ice/PropertiesF.h>
16#include <IceStorm/Election.h>
18#include <IceStorm/Util.h>
19#include <IceUtil/Time.h>
20
21namespace IceUtil
22{
23
24 class Timer;
26
27} // namespace IceUtil
28
29namespace IceStormElection
30{
31
32 class Observers;
34
35 class NodeI;
37
38} // namespace IceStormElection
39
40namespace IceStorm
41{
42
43 class TraceLevels;
45
46 class TopicReaper : public IceUtil::Shared, private IceUtil::Mutex
47 {
48 public:
49 void add(const std::string&);
50 std::vector<std::string> consumeReapedTopics();
51
52 private:
53 std::vector<std::string> _topics;
54 };
55
57
58 class Instance : public IceUtil::Shared
59 {
60 public:
66
67 Instance(const std::string&,
68 const std::string&,
72 const Ice::ObjectAdapterPtr& = 0,
73 const IceStormElection::NodePrx& = 0);
74
76
77 std::string instanceName() const;
78 std::string serviceName() const;
90 Ice::ObjectPrx topicReplicaProxy() const;
91 Ice::ObjectPrx publisherReplicaProxy() const;
94
95 IceUtil::Time discardInterval() const;
96 IceUtil::Time flushInterval() const;
97 int sendTimeout() const;
98 int sendQueueSizeMax() const;
100
101 void shutdown();
102 virtual void destroy();
103
104 private:
105 const std::string _instanceName;
106 const std::string _serviceName;
107 const Ice::CommunicatorPtr _communicator;
108 const Ice::ObjectAdapterPtr _publishAdapter;
109 const Ice::ObjectAdapterPtr _topicAdapter;
110 const Ice::ObjectAdapterPtr _nodeAdapter;
111 const IceStormElection::NodePrx _nodeProxy;
112 const TraceLevelsPtr _traceLevels;
113 const IceUtil::Time _discardInterval;
114 const IceUtil::Time _flushInterval;
115 const int _sendTimeout;
116 const int _sendQueueSizeMax;
117 const SendQueueSizeMaxPolicy _sendQueueSizeMaxPolicy;
118 const Ice::ObjectPrx _topicReplicaProxy;
119 const Ice::ObjectPrx _publisherReplicaProxy;
120 const TopicReaperPtr _topicReaper;
123 IceUtil::TimerPtr _batchFlusher;
124 IceUtil::TimerPtr _timer;
126 };
127
129
130 typedef IceDB::
131 ReadWriteCursor<SubscriberRecordKey, SubscriberRecord, IceDB::IceContext, Ice::OutputStream>
133
135 {
136 public:
137 PersistentInstance(const std::string&,
138 const std::string&,
142 const Ice::ObjectAdapterPtr& = 0,
143 const IceStormElection::NodePrx& = 0);
144
145 const IceDB::Env&
146 dbEnv() const
147 {
148 return _dbEnv;
149 }
150
151 LLUMap
152 lluMap() const
153 {
154 return _lluMap;
155 }
156
159 {
160 return _subscriberMap;
161 }
162
163 virtual void destroy();
164
165 private:
166 IceUtilInternal::FileLock _dbLock;
167 IceDB::Env _dbEnv;
168 LLUMap _lluMap;
169 SubscriberMap _subscriberMap;
170 };
171
173
174} // End namespace IceStorm
175
176#endif
void setNode(const IceStormElection::NodeIPtr &)
Definition Instance.cpp:192
TraceLevelsPtr traceLevels() const
Definition Instance.cpp:258
Ice::ObjectAdapterPtr publishAdapter() const
Definition Instance.cpp:222
IceUtil::TimerPtr timer() const
Definition Instance.cpp:270
IceUtil::TimerPtr batchFlusher() const
Definition Instance.cpp:264
int sendQueueSizeMax() const
Definition Instance.cpp:318
virtual void destroy()
Definition Instance.cpp:349
IceStormElection::NodeIPtr node() const
Definition Instance.cpp:246
Ice::CommunicatorPtr communicator() const
Definition Instance.cpp:210
SendQueueSizeMaxPolicy sendQueueSizeMaxPolicy() const
Definition Instance.cpp:324
Ice::ObjectAdapterPtr nodeAdapter() const
Definition Instance.cpp:234
IceUtil::Time flushInterval() const
Definition Instance.cpp:306
Ice::PropertiesPtr properties() const
Definition Instance.cpp:216
std::string serviceName() const
Definition Instance.cpp:204
IceStormElection::NodePrx nodeProxy() const
Definition Instance.cpp:252
Ice::ObjectAdapterPtr topicAdapter() const
Definition Instance.cpp:228
Ice::ObjectPrx topicReplicaProxy() const
Definition Instance.cpp:276
int sendTimeout() const
Definition Instance.cpp:312
std::string instanceName() const
Definition Instance.cpp:198
Instance(const std::string &, const std::string &, const Ice::CommunicatorPtr &, const Ice::ObjectAdapterPtr &, const Ice::ObjectAdapterPtr &, const Ice::ObjectAdapterPtr &=0, const IceStormElection::NodePrx &=0)
Definition Instance.cpp:100
IceStorm::Instrumentation::TopicManagerObserverPtr observer() const
Definition Instance.cpp:288
Ice::ObjectPrx publisherReplicaProxy() const
Definition Instance.cpp:282
TopicReaperPtr topicReaper() const
Definition Instance.cpp:294
IceUtil::Time discardInterval() const
Definition Instance.cpp:300
IceStormElection::ObserversPtr observers() const
Definition Instance.cpp:240
PersistentInstance(const std::string &, const std::string &, const Ice::CommunicatorPtr &, const Ice::ObjectAdapterPtr &, const Ice::ObjectAdapterPtr &, const Ice::ObjectAdapterPtr &=0, const IceStormElection::NodePrx &=0)
Definition Instance.cpp:47
SubscriberMap subscriberMap() const
Definition Instance.h:158
const IceDB::Env & dbEnv() const
Definition Instance.h:146
void add(const std::string &)
Definition Instance.cpp:32
std::vector< std::string > consumeReapedTopics()
Definition Instance.cpp:39
::IceInternal::ProxyHandle<::IceProxy::IceStormElection::Node > NodePrx
Definition Election.h:1210
IceUtil::Handle< NodeI > NodeIPtr
Definition Instance.h:36
IceUtil::Handle< Observers > ObserversPtr
Definition Instance.h:33
::IceInternal::Handle<::IceStorm::Instrumentation::TopicManagerObserver > TopicManagerObserverPtr
IceDB::Dbi< IceStorm::SubscriberRecordKey, IceStorm::SubscriberRecord, IceDB::IceContext, Ice::OutputStream > SubscriberMap
Definition Util.h:31
IceDB::ReadWriteCursor< SubscriberRecordKey, SubscriberRecord, IceDB::IceContext, Ice::OutputStream > SubscriberMapRWCursor
Definition Instance.h:132
IceUtil::Handle< TraceLevels > TraceLevelsPtr
Definition Instance.h:44
IceUtil::Handle< PersistentInstance > PersistentInstancePtr
Definition Instance.h:172
IceUtil::Handle< TopicReaper > TopicReaperPtr
Definition Instance.h:56
IceUtil::Handle< Instance > InstancePtr
Definition Instance.h:128
IceDB::Dbi< std::string, IceStormElection::LogUpdate, IceDB::IceContext, Ice::OutputStream > LLUMap
Definition Util.h:34
IceUtil::Handle< Timer > TimerPtr
Definition Instance.h:25
::IceInternal::Handle<::Ice::Properties > PropertiesPtr
::IceInternal::Handle<::Ice::Communicator > CommunicatorPtr
Definition IceManager.h:49
::IceInternal::Handle<::Ice::ObjectAdapter > ObjectAdapterPtr
Definition IceManager.h:52