15 #ifdef epicsExportSharedSymbols 16 # define monitorEpicsExportSharedSymbols 17 # undef epicsExportSharedSymbols 27 #ifdef monitorEpicsExportSharedSymbols 28 # define epicsExportSharedSymbols 29 # undef monitorEpicsExportSharedSymbols 37 namespace epics {
namespace pvAccess {
39 class MonitorRequester;
45 typedef std::tr1::shared_ptr<Monitor>
MonitorPtr;
92 virtual MonitorElementPtr poll() = 0;
98 virtual void release(MonitorElementPtr
const & monitorElement) = 0;
149 MonitorElementPtr elem;
153 Ref(
const Monitor::shared_pointer& M) :mon(M.
get()), elem(mon->poll()) {}
155 #if __cplusplus>=201103L 156 Ref(
Ref&& o) :mon(o.mon), elem(o.elem) {
168 MonitorElementPtr ret;
176 void attach(
const Monitor::shared_pointer& M) {
186 if(elem && mon) mon->
release(elem);
193 #if __cplusplus>=201103L 194 inline explicit operator bool()
const {
return elem.get(); }
197 typedef const Monitor*
const * hidden_bool_type;
199 operator hidden_bool_type()
const {
return elem.get() ? &mon : 0; }
211 #if __cplusplus>=201103L 215 #endif // __cplusplus<201103L 259 public std::tr1::enable_shared_from_this<MonitorFIFO>
290 const pvData::PVStructure::const_shared_pointer &pvRequest,
291 const Source::shared_pointer& source = Source::shared_pointer(),
297 inline const std::tr1::shared_ptr<MonitorRequester>
getRequester()
const {
return requester.lock(); }
299 void show(std::ostream& strm)
const;
308 void setFreeHighMark(
double level);
339 virtual void release(MonitorElementPtr
const & monitorElement)
OVERRIDE FINAL;
344 size_t freeCount()
const;
346 size_t _freeCount()
const;
349 static size_t num_instances;
375 const std::tr1::weak_ptr<MonitorRequester>
requester;
377 const epics::pvData::PVStructure::const_shared_pointer pvRequest;
381 const Source::shared_pointer upstream;
400 size_t freeHighLevel;
405 typedef std::list<MonitorElementPtr> buffer_t;
409 buffer_t inuse,
empty, returned;
421 std::ostream& operator<<(std::ostream& strm,
const MonitorFIFO& fifo) {
428 namespace epics {
namespace pvData {
epics::pvData::BitSetPtr empty
virtual void reportRemoteQueueStatus(epics::pvData::int32 freeElements)
pvd::StructureConstPtr type
Ref(const Monitor::shared_pointer &M)
TODO only here because of the Lockable.
std::tr1::shared_ptr< const Structure > StructureConstPtr
void providerRegInit(void *)
An element for a monitorQueue.
Mark external symbols and entry points for shared libraries.
epics::pvData::PVRequestMapper::mode_t mapperMode
default Mask.
const epics::pvData::PVStructurePtr pvStructurePtr
size_t nfilled
of elements ready to be poll()d
MonitorElementPtr letGo()
MonitorElement * operator->()
std::vector< MonitorElementPtr > MonitorElementPtrArray
#define POINTER_DEFINITIONS(clazz)
virtual void release(MonitorElementPtr const &monitorElement)=0
APIs for the epicsMutex mutual exclusion semaphore.
size_t maxCount
upper limit on requested FIFO size
const ChannelProcessRequester::weak_pointer requester
const epics::pvData::BitSet::shared_pointer overrunBitSet
Data interface for a structure,.
std::tr1::shared_ptr< PVStructure > PVStructurePtr
MonitorRequester requester_type
const epics::pvData::BitSet::shared_pointer changedBitSet
Callback implemented by monitor clients.
size_t nempty
of elements available for new remote data
void swap(shared_ptr< T > &a, shared_ptr< T > &b) BOOST_NOEXCEPT
size_t noutstanding
of elements poll()d but not released()d
std::tr1::shared_ptr< MonitorElement > MonitorElementPtr
const std::tr1::shared_ptr< MonitorRequester > getRequester() const
Instance declaring destroy method.
bool operator!=(const Ref &o) const
MonitorElement & operator*()
void attach(const Monitor::shared_pointer &M)
bool operator==(const Ref &o) const
virtual void getStats(Stats &s) const
void show(std::ostream &strm) const
#define EPICS_NOT_COPYABLE(CLASS)
Disable implicit copyable.
virtual MonitorElementPtr poll()=0
bool dropEmptyUpdates
default true. Drop updates which don't include an field values.
std::tr1::shared_ptr< Monitor > MonitorPtr
virtual void freeHighMark(MonitorFIFO *mon, size_t numEmpty)