19 namespace epics {
namespace pvDatabase {
58 public std::tr1::enable_shared_from_this<PVRecord>
72 virtual bool init() {initPVRecord();
return true;}
88 virtual void process();
101 virtual void remove();
109 virtual epics::pvAccess::RPCServiceAsync::shared_pointer
getService(
112 return epics::pvAccess::RPCServiceAsync::shared_pointer();
121 static PVRecordPtr create(
122 std::string
const & recordName,
149 PVRecordFieldPtr findPVRecordField(
182 void lockOtherRecord(PVRecordPtr
const & otherRecord);
191 bool addPVRecordClient(PVRecordClientPtr
const & pvRecordClient);
201 PVListenerPtr
const & pvListener,
217 PVListenerPtr
const & pvListener,
224 void beginGroupPut();
246 std::string
const & recordName,
256 void unlistenClients();
258 PVRecordFieldPtr findPVRecordField(
259 PVRecordStructurePtr
const & pvrs,
262 std::string recordName;
264 PVRecordStructurePtr pvRecordStructure;
265 std::list<PVListenerWPtr> pvListenerList;
266 std::list<PVRecordClientWPtr> clientList;
268 std::size_t depthGroupPut;
272 PVListenerWPtr pvListener;
288 public std::tr1::enable_shared_from_this<PVRecordField>
301 PVRecordStructurePtr
const &parent,
302 PVRecordPtr
const & pvRecord);
312 PVRecordStructurePtr getParent();
323 std::string getFullFieldName();
328 std::string getFullName();
333 PVRecordPtr getPVRecord();
338 virtual void postPut();
341 virtual void postParent(PVRecordFieldPtr
const & subField);
342 virtual void postSubField();
344 bool addListener(PVListenerPtr
const & pvListener);
345 virtual void removeListener(PVListenerPtr
const & pvListener);
348 std::list<PVListenerWPtr> pvListenerList;
349 epics::pvData::PVField::weak_pointer pvField;
351 PVRecordStructureWPtr parent;
352 PVRecordWPtr pvRecord;
353 std::string fullName;
354 std::string fullFieldName;
376 PVRecordStructurePtr
const &parent,
377 PVRecordPtr
const & pvRecord);
386 PVRecordFieldPtrArrayPtr getPVRecordFields();
398 epics::pvData::PVStructure::weak_pointer pvStructure;
399 PVRecordFieldPtrArrayPtr pvRecordFields;
419 virtual void detach(PVRecordPtr
const & pvRecord) = 0;
443 virtual void dataPut(PVRecordFieldPtr
const & pvRecordField) = 0;
450 virtual void dataPut(
451 PVRecordStructurePtr
const & requested,
452 PVRecordFieldPtr
const & pvRecordField) = 0;
457 virtual void beginGroupPut(PVRecordPtr
const & pvRecord) = 0;
462 virtual void endGroupPut(PVRecordPtr
const & pvRecord) = 0;
467 virtual void unlisten(PVRecordPtr
const & pvRecord) = 0;
482 static PVDatabasePtr getMaster();
493 PVRecordPtr findRecord(std::string
const& recordName);
500 bool addRecord(PVRecordPtr
const & record);
507 bool removeRecord(PVRecordPtr
const & record);
516 PVRecordWPtr removeFromMap(PVRecordPtr
const & record);
520 PVRecordMap recordMap;
522 static bool getMasterFirstCall;
virtual void start()
Optional method for derived class.
int getTraceLevel()
get trace level (0,1,2) means (nothing,lifetime,process)
PVRecordStructurePtr getPVRecordStructure() const
Get the top level PVRecordStructure.
epics::pvData::PVStructurePtr getPVStructure() const
Get the top level PVStructure.
std::tr1::shared_ptr< PVListener > PVListenerPtr
virtual epics::pvAccess::RPCServiceAsync::shared_pointer getService(epics::pvData::PVStructurePtr const &pvRequest)
Optional method for derived class.
std::tr1::shared_ptr< PVCopy > PVCopyPtr
Listener for PVRecord::message.
This class is implemented by code that calls setPostHander.
virtual ~PVRecordField()
Destructor.
virtual ~PVRecordStructure()
Destructor.
virtual ~PVListener()
Destructor.
TODO only here because of the Lockable.
std::tr1::shared_ptr< PVRecordClient > PVRecordClientPtr
std::map< std::string, PVRecordPtr > PVRecordMap
virtual ~PVRecordClient()
Destructor.
Mark external symbols and entry points for shared libraries.
std::tr1::weak_ptr< PVDatabase > PVDatabaseWPtr
std::tr1::weak_ptr< PVListener > PVListenerWPtr
std::tr1::shared_ptr< PVStringArray > PVStringArrayPtr
Base interface for a PVRecord.
std::tr1::shared_ptr< PVDatabase > PVDatabasePtr
#define POINTER_DEFINITIONS(clazz)
virtual bool init()
Optional initialization method.
The interface for a database of PVRecords.
Methods for accessing a timeStamp structure.
std::tr1::weak_ptr< PVRecordStructure > PVRecordStructureWPtr
Interface for a field of a record.
Callback for traversing master structure.
An interface implemented by code that accesses the record.
std::tr1::shared_ptr< PVRecord > PVRecordPtr
virtual void destroy()
DEPRECATED.
std::tr1::shared_ptr< PVStructure > PVStructurePtr
std::vector< PVRecordFieldPtr > PVRecordFieldPtrArray
std::string getRecordName() const
Get the name of the record.
std::tr1::shared_ptr< PVRecordStructure > PVRecordStructurePtr
std::tr1::shared_ptr< PVField > PVFieldPtr
std::tr1::weak_ptr< PVRecord > PVRecordWPtr
std::tr1::shared_ptr< PVRecordField > PVRecordFieldPtr
Interface for a field that is a structure.
std::tr1::shared_ptr< PVRecordFieldPtrArray > PVRecordFieldPtrArrayPtr
std::ostream & operator<<(std::ostream &o, const PVRecord &record)
std::tr1::weak_ptr< PVRecordClient > PVRecordClientWPtr
void setTraceLevel(int level)
set trace level (0,1,2) means (nothing,lifetime,process)
Methods for manipulating timeStamp.