pvAccessCPP  7.1.7
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | Public Attributes | List of all members
pvac::MonitorSync Struct Reference

Subscription usable w/o callbacks. More...

#include <client/pva/client.h>

Inheritance diagram for pvac::MonitorSync:
Inheritance graph
[legend]
Collaboration diagram for pvac::MonitorSync:
Collaboration graph
[legend]

Public Member Functions

 MonitorSync (const Monitor &, const std::tr1::shared_ptr< SImpl > &)
 
bool wait ()
 wait for new event More...
 
bool wait (double timeout)
 wait for new event More...
 
bool test ()
 check if new event is immediately available. More...
 
void wake ()
 Abort one call to wait(), either concurrent or future. More...
 
std::string name () const
 Channel name.
 
void cancel ()
 Immediate cancellation. More...
 
bool poll ()
 updates root, changed, overrun More...
 
bool complete () const
 true if all events received. More...
 
bool valid () const
 
 operator bool_type () const
 
void reset ()
 

Public Attributes

MonitorEvent event
 most recent event updated only during wait() or poll()
 
epics::pvData::PVStructure::const_shared_pointer root
 Monitor update data. More...
 
epics::pvData::BitSet changed
 
epics::pvData::BitSet overrun
 

Detailed Description

Subscription usable w/o callbacks.

Basic usage is to call wait() or test(). If true is returned, then the 'event', 'root', 'changed', and 'overrun' members have been updated with a new event. Test 'event.event' first to find out which kind of event has occured.

Note that wait()/test() methods are distinct from base class poll(). wait()/test() check for the arrival of MonitorEvent while poll() checks for the availability of data (eg. following a Data event).

Definition at line 206 of file client.h.

Member Function Documentation

void pvac::Monitor::cancel ( )
inherited

Immediate cancellation.

Does not wait for remote confirmation.

Since
Up to 7.0.0 also cleared root, changed, and overrun. After 7.0.0, these data members are left unchanged.
bool pvac::Monitor::complete ( ) const
inherited

true if all events received.

Check after poll()==false

bool pvac::Monitor::poll ( )
inherited

updates root, changed, overrun

Returns
true if a new update was extracted from the queue.
Note
This method does not block.
MonitorEvent::Data will not be repeated until poll()==false.
Postcondition
root!=NULL (after version 6.0.0)
root!=NULL iff poll()==true (In version 6.0.0)
bool pvac::MonitorSync::test ( )

check if new event is immediately available.

Does not block.

bool pvac::MonitorSync::wait ( )

wait for new event

Returns
true when a new event was received. false if wake() was called.
bool pvac::MonitorSync::wait ( double  timeout)

wait for new event

Returns
false on timeout
void pvac::MonitorSync::wake ( )

Abort one call to wait(), either concurrent or future.

Calls are queued. wait() will return with MonitorEvent::Fail.

Member Data Documentation

epics::pvData::PVStructure::const_shared_pointer pvac::Monitor::root
inherited

Monitor update data.

After version 6.0.0

Initially NULL, becomes !NULL the first time poll()==true. The PVStructure pointed to be root will presist until Monitor reconnect w/ type change. This can be detected by comparing root.get(). references to root may be cached subject to this test.

In version 6.0.0

NULL except after poll()==true. poll()==false sets root=NULL. references to root should not be stored between calls to poll().

Definition at line 160 of file client.h.


The documentation for this struct was generated from the following file: