Subscriber.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 SUBSCRIBER_H
11 #define SUBSCRIBER_H
12 
13 #include <Ice/ObserverHelper.h>
17 #include <IceUtil/RecMutex.h>
18 
19 namespace IceStorm
20 {
21 
22  class Instance;
24 
25  class Subscriber;
27 
28  class Subscriber : public IceUtil::Shared
29  {
30  public:
32 
33  Ice::ObjectPrx proxy() const; // Get the per subscriber object.
34  Ice::Identity id() const; // Return the id of the subscriber.
35  IceStorm::SubscriberRecord record() const; // Get the subscriber record.
36 
37  // Returns false if the subscriber should be reaped.
38  bool queue(bool, const EventDataSeq&);
39  bool reap();
40  void resetIfReaped();
41  bool errored() const;
42 
43  void destroy();
44 
45  // To be called by the AMI callbacks only.
46  void completed(const Ice::AsyncResultPtr&);
47  void error(bool, const Ice::Exception&);
48 
49  void shutdown();
50 
51  void updateObserver();
52 
54  {
55  SubscriberStateOnline, // Online waiting to send events.
56  SubscriberStateOffline, // Offline, retrying.
57  SubscriberStateError, // Error state, awaiting reaping.
59  };
60 
61  virtual void flush() = 0;
62 
63  protected:
65 
66  Subscriber(const InstancePtr&,
68  const Ice::ObjectPrx&,
69  int,
70  int);
71 
72  // Immutable
74  const IceStorm::SubscriberRecord _rec; // The subscriber record.
75  const int _retryCount; // The retryCount.
76  const int _maxOutstanding; // The maximum number of oustanding events.
77  const Ice::ObjectPrx _proxy; // The per subscriber object proxy, if any.
78  const Ice::ObjectPrx _proxyReplica; // The replicated per subscriber object proxy, if any.
79 
80  IceUtil::Monitor<IceUtil::RecMutex> _lock;
81 
82  bool _shutdown;
83 
84  SubscriberState _state; // The subscriber state.
85 
86  int _outstanding; // The current number of outstanding responses.
87  int _outstandingCount; // The current number of outstanding events when batching events (only used for metrics).
88  EventDataSeq _events; // The queue of events to send.
89 
90  // The next time to try sending a new event if we're offline.
93 
94  IceInternal::ObserverHelperT<IceStorm::Instrumentation::SubscriberObserver> _observer;
95  };
96 
101 
102 } // namespace IceStorm
103 
104 #endif // SUBSCRIBER_H
Instrumentation.h
IceStorm::Subscriber::SubscriberStateOnline
@ SubscriberStateOnline
Definition: Subscriber.h:55
IceStorm::Subscriber::resetIfReaped
void resetIfReaped()
Definition: Subscriber.cpp:742
IceStorm
Definition: DBTypes.ice:22
IceStorm::Subscriber::_outstanding
int _outstanding
Definition: Subscriber.h:86
IceStorm::Subscriber
Definition: Subscriber.h:28
IceStorm::Subscriber::_next
IceUtil::Time _next
Definition: Subscriber.h:91
IceStorm::Subscriber::_state
SubscriberState _state
Definition: Subscriber.h:84
IceStorm::EventDataSeq
std::deque<::IceStorm::EventDataPtr > EventDataSeq
A sequence of EventData.
Definition: IceStormInternal.h:528
IceStorm::Subscriber::setState
void setState(SubscriberState)
Definition: Subscriber.cpp:1026
IceStormInternal.h
IceStorm::operator!=
bool operator!=(const IceStorm::Subscriber &, const IceStorm::Subscriber &)
Definition: Subscriber.cpp:1065
IceStorm::Subscriber::_outstandingCount
int _outstandingCount
Definition: Subscriber.h:87
IceStorm::operator==
bool operator==(const TopicLink &lhs, const TopicLink &rhs)
Definition: IceStormInternal.h:867
IceStorm::Subscriber::SubscriberStateReaped
@ SubscriberStateReaped
Definition: Subscriber.h:58
IceStorm::Subscriber::_shutdown
bool _shutdown
Definition: Subscriber.h:82
IceStorm::SubscriberPtr
IceUtil::Handle< Subscriber > SubscriberPtr
Definition: Subscriber.h:25
IceStorm::Subscriber::_lock
IceUtil::Monitor< IceUtil::RecMutex > _lock
Definition: Subscriber.h:80
IceStorm::Subscriber::create
static SubscriberPtr create(const InstancePtr &, const IceStorm::SubscriberRecord &)
Definition: Subscriber.cpp:522
IceStorm::Subscriber::reap
bool reap()
Definition: Subscriber.cpp:729
IceStorm::Subscriber::proxy
Ice::ObjectPrx proxy() const
Definition: Subscriber.cpp:645
IceStorm::Subscriber::_proxyReplica
const Ice::ObjectPrx _proxyReplica
Definition: Subscriber.h:78
IceStorm::SubscriberRecord
Used to store persistent information for persistent subscribers.
Definition: SubscriberRecord.h:233
IceStorm::Subscriber::_maxOutstanding
const int _maxOutstanding
Definition: Subscriber.h:76
GfxTL::Identity
void Identity(MatrixXX< N, N, T > *a)
Definition: MatrixXX.h:570
IceStorm::Subscriber::id
Ice::Identity id() const
Definition: Subscriber.cpp:651
IceStorm::Subscriber::SubscriberStateError
@ SubscriberStateError
Definition: Subscriber.h:57
IceStorm::Subscriber::updateObserver
void updateObserver()
Definition: Subscriber.cpp:952
IceStorm::Subscriber::completed
void completed(const Ice::AsyncResultPtr &)
Definition: Subscriber.cpp:900
IceStorm::Subscriber::errored
bool errored() const
Definition: Subscriber.cpp:752
IceStorm::Subscriber::SubscriberState
SubscriberState
Definition: Subscriber.h:53
IceStorm::Subscriber::record
IceStorm::SubscriberRecord record() const
Definition: Subscriber.cpp:657
IceStorm::Subscriber::flush
virtual void flush()=0
IceStorm::InstancePtr
IceUtil::Handle< Instance > InstancePtr
Definition: Instance.h:128
IceStorm::Subscriber::_events
EventDataSeq _events
Definition: Subscriber.h:88
armarx::armem::Time
armarx::core::time::DateTime Time
Definition: forward_declarations.h:13
IceStorm::Subscriber::_proxy
const Ice::ObjectPrx _proxy
Definition: Subscriber.h:77
IceStorm::operator<
bool operator<(const TopicLink &lhs, const TopicLink &rhs)
Definition: IceStormInternal.h:873
SubscriberRecord.h
IceStorm::Subscriber::error
void error(bool, const Ice::Exception &)
Definition: Subscriber.cpp:785
IceStorm::Subscriber::_currentRetry
int _currentRetry
Definition: Subscriber.h:92
IceStorm::Subscriber::_retryCount
const int _retryCount
Definition: Subscriber.h:75
IceUtil::Handle
Definition: forward_declarations.h:30
IceStorm::Subscriber::_rec
const IceStorm::SubscriberRecord _rec
Definition: Subscriber.h:74
IceStorm::Subscriber::_instance
const InstancePtr _instance
Definition: Subscriber.h:73
IceStorm::Subscriber::Subscriber
Subscriber(const InstancePtr &, const IceStorm::SubscriberRecord &, const Ice::ObjectPrx &, int, int)
Definition: Subscriber.cpp:967
IceStorm::Subscriber::_observer
IceInternal::ObserverHelperT< IceStorm::Instrumentation::SubscriberObserver > _observer
Definition: Subscriber.h:94
IceStorm::Subscriber::shutdown
void shutdown()
Definition: Subscriber.cpp:938
IceStorm::Subscriber::SubscriberStateOffline
@ SubscriberStateOffline
Definition: Subscriber.h:56
IceStorm::Subscriber::queue
bool queue(bool, const EventDataSeq &)
Definition: Subscriber.cpp:663
IceStorm::Subscriber::destroy
void destroy()
Definition: Subscriber.cpp:759