![]() |
This is Unofficial EPICS BASE Doxygen Site
|
Base interface for a PVRecord. More...
#include "pvDatabase.h"
Public Member Functions | |
POINTER_DEFINITIONS (PVRecord) | |
virtual | ~PVRecord () |
virtual bool | init () |
Optional initialization method. More... | |
virtual void | start () |
Optional method for derived class. More... | |
virtual void | process () |
Optional method for derived class. More... | |
virtual void | destroy () |
DEPRECATED. More... | |
virtual void | remove () |
remove record from database. More... | |
virtual epics::pvAccess::RPCServiceAsync::shared_pointer | getService (epics::pvData::PVStructurePtr const &pvRequest) |
Optional method for derived class. More... | |
std::string | getRecordName () const |
Get the name of the record. More... | |
PVRecordStructurePtr | getPVRecordStructure () const |
Get the top level PVRecordStructure. More... | |
epics::pvData::PVStructurePtr | getPVStructure () const |
Get the top level PVStructure. More... | |
PVRecordFieldPtr | findPVRecordField (epics::pvData::PVFieldPtr const &pvField) |
Find the PVRecordField for the PVField. More... | |
void | lock () |
Lock the record. More... | |
void | unlock () |
Unlock the record. More... | |
bool | tryLock () |
Try to lock the record. More... | |
void | lockOtherRecord (PVRecordPtr const &otherRecord) |
Lock another record. More... | |
bool | addPVRecordClient (PVRecordClientPtr const &pvRecordClient) |
Add a client that wants to access the record. More... | |
bool | addListener (PVListenerPtr const &pvListener, epics::pvCopy::PVCopyPtr const &pvCopy) |
Add a PVListener. More... | |
void | nextMasterPVField (epics::pvData::PVFieldPtr const &pvField) |
PVCopyTraverseMasterCallback method. More... | |
bool | removeListener (PVListenerPtr const &pvListener, epics::pvCopy::PVCopyPtr const &pvCopy) |
Remove a listener. More... | |
void | beginGroupPut () |
Begins a group of puts. More... | |
void | endGroupPut () |
Ends a group of puts. More... | |
int | getTraceLevel () |
get trace level (0,1,2) means (nothing,lifetime,process) More... | |
void | setTraceLevel (int level) |
set trace level (0,1,2) means (nothing,lifetime,process) More... | |
![]() | |
POINTER_DEFINITIONS (PVCopyTraverseMasterCallback) | |
virtual | ~PVCopyTraverseMasterCallback () |
Static Public Member Functions | |
static PVRecordPtr | create (std::string const &recordName, epics::pvData::PVStructurePtr const &pvStructure) |
Creates a soft record. More... | |
Protected Member Functions | |
PVRecord (std::string const &recordName, epics::pvData::PVStructurePtr const &pvStructure) | |
Constructor. More... | |
void | initPVRecord () |
Initializes the base class. More... | |
Friends | |
class | PVDatabase |
Base interface for a PVRecord.
It is also a complete implementation for soft records. A soft record is a record where method process sets an optional top level timeStamp field to the current time and does nothing else.
Definition at line 56 of file pvDatabase.h.
|
virtual |
The Destructor.
Definition at line 61 of file pvRecord.cpp.
|
protected |
Constructor.
recordName | The name of the record |
pvStructure | The top level PVStructutre |
Definition at line 50 of file pvRecord.cpp.
bool epics::pvDatabase::PVRecord::addListener | ( | PVListenerPtr const & | pvListener, |
epics::pvCopy::PVCopyPtr const & | pvCopy | ||
) |
Add a PVListener.
This must be called before calling pvRecordField.addListener.
pvListener | The listener. |
pvCopy | The pvStructure that has the client fields. |
Definition at line 230 of file pvRecord.cpp.
bool epics::pvDatabase::PVRecord::addPVRecordClient | ( | PVRecordClientPtr const & | pvRecordClient | ) |
Add a client that wants to access the record.
Every client that accesses the record must call this so that the client can be notified when the record is deleted.
pvRecordClient | The client. |
Definition at line 199 of file pvRecord.cpp.
void epics::pvDatabase::PVRecord::beginGroupPut | ( | ) |
Begins a group of puts.
Definition at line 283 of file pvRecord.cpp.
|
static |
Creates a soft record.
recordName | The name of the record, which is also the channelName. |
pvStructure | The top level structure. |
Definition at line 38 of file pvRecord.cpp.
|
inlinevirtual |
void epics::pvDatabase::PVRecord::endGroupPut | ( | ) |
Ends a group of puts.
Definition at line 298 of file pvRecord.cpp.
PVRecordFieldPtr epics::pvDatabase::PVRecord::findPVRecordField | ( | epics::pvData::PVFieldPtr const & | pvField | ) |
Find the PVRecordField for the PVField.
This is called by the pvCopy facility.
pvField | The PVField. |
Definition at line 133 of file pvRecord.cpp.
|
inline |
Get the top level PVRecordStructure.
Definition at line 135 of file pvDatabase.h.
|
inline |
Get the top level PVStructure.
Definition at line 141 of file pvDatabase.h.
|
inline |
|
inlinevirtual |
Optional method for derived class.
Return a service corresponding to the specified request PVStructure.
pvRequest | The request PVStructure |
Definition at line 109 of file pvDatabase.h.
|
inline |
get trace level (0,1,2) means (nothing,lifetime,process)
Definition at line 233 of file pvDatabase.h.
|
inlinevirtual |
Optional initialization method.
A derived method Must call initPVRecord.
Reimplemented in epics::pvDatabase::ProcessRecord, epics::pvDatabase::TraceRecord, epics::pvDatabase::AddRecord, and epics::pvDatabase::RemoveRecord.
Definition at line 72 of file pvDatabase.h.
|
protected |
Initializes the base class.
Must be called by derived classes.
Definition at line 110 of file pvRecord.cpp.
void epics::pvDatabase::PVRecord::lock | ( | ) |
Lock the record.
Any code must lock while accessing a record.
Definition at line 164 of file pvRecord.cpp.
void epics::pvDatabase::PVRecord::lockOtherRecord | ( | PVRecordPtr const & | otherRecord | ) |
Lock another record.
A client that holds the lock for one record can lock one other record. A client must not call this if the client already has the lock for more then one record.
otherRecord | The other record to lock. |
Definition at line 185 of file pvRecord.cpp.
|
virtual |
PVCopyTraverseMasterCallback method.
pvField | The next client field. |
Implements epics::pvCopy::PVCopyTraverseMasterCallback.
Definition at line 246 of file pvRecord.cpp.
epics::pvDatabase::PVRecord::POINTER_DEFINITIONS | ( | PVRecord | ) |
|
virtual |
Optional method for derived class.
It is the method that makes a record smart. If it encounters errors it should raise alarms and/or call the message method provided by the base class. If the pvStructure has a top level timeStamp, the base class sets the timeStamp to the current time.
Reimplemented in epics::pvDatabase::ProcessRecord, epics::pvDatabase::TraceRecord, epics::pvDatabase::AddRecord, and epics::pvDatabase::RemoveRecord.
Definition at line 120 of file pvRecord.cpp.
|
virtual |
remove record from database.
Remove the PVRecord. Release any resources used and get rid of listeners and requesters. If derived class overrides this then it must call PVRecord::remove() after it has destroyed any resorces it uses.
Definition at line 98 of file pvRecord.cpp.
bool epics::pvDatabase::PVRecord::removeListener | ( | PVListenerPtr const & | pvListener, |
epics::pvCopy::PVCopyPtr const & | pvCopy | ||
) |
Remove a listener.
pvListener | The listener. |
pvCopy | The pvStructure that has the client fields. |
Definition at line 258 of file pvRecord.cpp.
|
inline |
set trace level (0,1,2) means (nothing,lifetime,process)
level | The level |
Definition at line 238 of file pvDatabase.h.
|
inlinevirtual |
Optional method for derived class.
It is called before record is added to database.
Definition at line 78 of file pvDatabase.h.
bool epics::pvDatabase::PVRecord::tryLock | ( | ) |
Try to lock the record.
If true then just like lock. If falseclient can not access record. Code can try to simultaneously hold the lock for more than two records by calling this method but must be willing to accept failure.
Definition at line 178 of file pvRecord.cpp.
void epics::pvDatabase::PVRecord::unlock | ( | ) |
Unlock the record.
The code that calls lock must unlock when done accessing the record.
Definition at line 171 of file pvRecord.cpp.
|
friend |
Definition at line 255 of file pvDatabase.h.