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 
21 namespace IceUtil
22 {
23 
24  class Timer;
26 
27 } // namespace IceUtil
28 
29 namespace IceStormElection
30 {
31 
32  class Observers;
34 
35  class NodeI;
37 
38 } // namespace IceStormElection
39 
40 namespace 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:
62  {
65  };
66 
67  Instance(const std::string&,
68  const std::string&,
69  const Ice::CommunicatorPtr&,
70  const Ice::ObjectAdapterPtr&,
71  const Ice::ObjectAdapterPtr&,
72  const Ice::ObjectAdapterPtr& = 0,
73  const IceStormElection::NodePrx& = 0);
74 
76 
77  std::string instanceName() const;
78  std::string serviceName() const;
89  IceUtil::TimerPtr timer() const;
90  Ice::ObjectPrx topicReplicaProxy() const;
91  Ice::ObjectPrx publisherReplicaProxy() const;
94 
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&,
139  const Ice::CommunicatorPtr&,
140  const Ice::ObjectAdapterPtr&,
141  const Ice::ObjectAdapterPtr&,
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
Instrumentation.h
IceStorm::Instance::nodeAdapter
Ice::ObjectAdapterPtr nodeAdapter() const
Definition: Instance.cpp:234
IceStorm
Definition: DBTypes.ice:22
IceStorm::Instance::topicAdapter
Ice::ObjectAdapterPtr topicAdapter() const
Definition: Instance.cpp:228
IceStorm::PersistentInstance::lluMap
LLUMap lluMap() const
Definition: Instance.h:152
IceStormElection::ObserversPtr
IceUtil::Handle< Observers > ObserversPtr
Definition: Instance.h:32
IceStorm::Instance::node
IceStormElection::NodeIPtr node() const
Definition: Instance.cpp:246
IceStorm::Instance::DropEvents
@ DropEvents
Definition: Instance.h:64
IceStormElection::NodeIPtr
IceUtil::Handle< NodeI > NodeIPtr
Definition: Instance.h:35
IceStorm::Instance::traceLevels
TraceLevelsPtr traceLevels() const
Definition: Instance.cpp:258
IceStorm::Instance::sendQueueSizeMax
int sendQueueSizeMax() const
Definition: Instance.cpp:318
IceStorm::Instance::setNode
void setNode(const IceStormElection::NodeIPtr &)
Definition: Instance.cpp:192
IceStorm::Instance::Instance
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
IceStormElection::Observers
Definition: Observers.h:33
IceStorm::TopicReaper::consumeReapedTopics
std::vector< std::string > consumeReapedTopics()
Definition: Instance.cpp:39
IceStorm::Instance::communicator
Ice::CommunicatorPtr communicator() const
Definition: Instance.cpp:210
IceStorm::Instance::publishAdapter
Ice::ObjectAdapterPtr publishAdapter() const
Definition: Instance.cpp:222
IceStorm::Instance::destroy
virtual void destroy()
Definition: Instance.cpp:349
IceStorm::TraceLevelsPtr
IceUtil::Handle< TraceLevels > TraceLevelsPtr
Definition: Instance.h:43
IceUtil
Definition: Instance.h:21
IceStorm::Instance::topicReaper
TopicReaperPtr topicReaper() const
Definition: Instance.cpp:294
Timer
Definition: timer.hpp:60
Util.h
IceInternal::Handle<::Ice::Communicator >
IceStorm::Instance::flushInterval
IceUtil::Time flushInterval() const
Definition: Instance.cpp:306
IceStorm::Instance
Definition: Instance.h:58
IceStorm::Instance::serviceName
std::string serviceName() const
Definition: Instance.cpp:204
IceStorm::Instance::nodeProxy
IceStormElection::NodePrx nodeProxy() const
Definition: Instance.cpp:252
IceDB::Env
Definition: IceDB.h:144
IceStormElection
Definition: DBTypes.ice:17
IceStorm::TopicReaperPtr
IceUtil::Handle< TopicReaper > TopicReaperPtr
Definition: Instance.h:56
IceStorm::Instance::properties
Ice::PropertiesPtr properties() const
Definition: Instance.cpp:216
IceStorm::PersistentInstance::subscriberMap
SubscriberMap subscriberMap() const
Definition: Instance.h:158
IceStorm::TopicReaper::add
void add(const std::string &)
Definition: Instance.cpp:32
IceStorm::Instance::instanceName
std::string instanceName() const
Definition: Instance.cpp:198
IceStormElection::NodeI
Definition: NodeI.h:28
IceStorm::TopicReaper
Definition: Instance.h:46
IceStorm::SubscriberMapRWCursor
IceDB::ReadWriteCursor< SubscriberRecordKey, SubscriberRecord, IceDB::IceContext, Ice::OutputStream > SubscriberMapRWCursor
Definition: Instance.h:132
IceStorm::PersistentInstance::dbEnv
const IceDB::Env & dbEnv() const
Definition: Instance.h:146
IceStorm::InstancePtr
IceUtil::Handle< Instance > InstancePtr
Definition: Instance.h:128
IceStorm::Instance::publisherReplicaProxy
Ice::ObjectPrx publisherReplicaProxy() const
Definition: Instance.cpp:282
IceStorm::Instance::SendQueueSizeMaxPolicy
SendQueueSizeMaxPolicy
Definition: Instance.h:61
IceStorm::Instance::RemoveSubscriber
@ RemoveSubscriber
Definition: Instance.h:63
IceDB::Dbi< std::string, IceStormElection::LogUpdate, IceDB::IceContext, Ice::OutputStream >
armarx::armem::Time
armarx::core::time::DateTime Time
Definition: forward_declarations.h:13
IceStorm::Instance::observer
IceStorm::Instrumentation::TopicManagerObserverPtr observer() const
Definition: Instance.cpp:288
IceStorm::PersistentInstance
Definition: Instance.h:134
IceStorm::TraceLevels
Definition: TraceLevels.h:21
IceStorm::Instance::sendQueueSizeMaxPolicy
SendQueueSizeMaxPolicy sendQueueSizeMaxPolicy() const
Definition: Instance.cpp:324
IceStorm::Instance::shutdown
void shutdown()
Definition: Instance.cpp:330
IceStorm::Instance::sendTimeout
int sendTimeout() const
Definition: Instance.cpp:312
IceStorm::Instance::discardInterval
IceUtil::Time discardInterval() const
Definition: Instance.cpp:300
Election.h
IceUtil::Handle< Timer >
IceInternal::ProxyHandle<::IceProxy::IceStormElection::Node >
IceStorm::Instance::observers
IceStormElection::ObserversPtr observers() const
Definition: Instance.cpp:240
IceStorm::Instance::timer
IceUtil::TimerPtr timer() const
Definition: Instance.cpp:270
armarx::Mutex
boost::mutex Mutex
Definition: Synchronization.h:149
IceStorm::PersistentInstance::destroy
virtual void destroy()
Definition: Instance.cpp:92
IceStorm::PersistentInstancePtr
IceUtil::Handle< PersistentInstance > PersistentInstancePtr
Definition: Instance.h:172
IceUtil::TimerPtr
IceUtil::Handle< Timer > TimerPtr
Definition: Instance.h:24
IceStorm::PersistentInstance::PersistentInstance
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
IceStorm::Instance::topicReplicaProxy
Ice::ObjectPrx topicReplicaProxy() const
Definition: Instance.cpp:276
IceStorm::Instance::batchFlusher
IceUtil::TimerPtr batchFlusher() const
Definition: Instance.cpp:264