This is Unofficial EPICS BASE Doxygen Site
epics::pvDatabase::PVDatabase Class Reference

The interface for a database of PVRecords. More...

#include "pvDatabase.h"

Public Member Functions

 POINTER_DEFINITIONS (PVDatabase)
 
virtual ~PVDatabase ()
 Destructor. More...
 
PVRecordPtr findRecord (std::string const &recordName)
 
bool addRecord (PVRecordPtr const &record)
 Add a record. More...
 
bool removeRecord (PVRecordPtr const &record)
 Remove a record. More...
 
epics::pvData::PVStringArrayPtr getRecordNames ()
 Get the names of all the records in the database. More...
 

Static Public Member Functions

static PVDatabasePtr getMaster ()
 Get the master database. More...
 

Friends

class PVRecord
 

Detailed Description

The interface for a database of PVRecords.

Author
mrk

Definition at line 475 of file pvDatabase.h.

Constructor & Destructor Documentation

epics::pvDatabase::PVDatabase::~PVDatabase ( )
virtual

Destructor.

Definition at line 56 of file pvDatabase.cpp.

57 {
58  if(DEBUG_LEVEL>0) cout << "PVDatabase::~PVDatabase()\n";
59 }
#define DEBUG_LEVEL
Definition: pvDatabase.cpp:34

Member Function Documentation

bool epics::pvDatabase::PVDatabase::addRecord ( PVRecordPtr const &  record)

Add a record.

Parameters
recordThe record to add.
Returns
true if record was added.

Definition at line 79 of file pvDatabase.cpp.

80 {
81  if(record->getTraceLevel()>0) {
82  cout << "PVDatabase::addRecord " << record->getRecordName() << endl;
83  }
85  string recordName = record->getRecordName();
86  PVRecordMap::iterator iter = recordMap.find(recordName);
87  if(iter!=recordMap.end()) {
88  return false;
89  }
90  record->start();
91  recordMap.insert(PVRecordMap::value_type(recordName,record));
92  return true;
93 }
PVRecordPtr epics::pvDatabase::PVDatabase::findRecord ( std::string const &  recordName)

Find a record. An empty pointer is returned if the record is not in the database.

Parameters
recordNameThe record to find.
Returns
The shared pointer.

Definition at line 69 of file pvDatabase.cpp.

70 {
72  PVRecordMap::iterator iter = recordMap.find(recordName);
73  if(iter!=recordMap.end()) {
74  return (*iter).second;
75  }
76  return PVRecordPtr();
77 }
std::tr1::shared_ptr< PVRecord > PVRecordPtr
Definition: pvDatabase.h:21
PVDatabasePtr epics::pvDatabase::PVDatabase::getMaster ( )
static

Get the master database.

Returns
The shared pointer.

Definition at line 38 of file pvDatabase.cpp.

39 {
40  static bool firstTime = true;
41  if(firstTime) {
42  firstTime = false;
43  pvDatabaseMaster = PVDatabasePtr(new PVDatabase());
44  PVArrayPlugin::create();
45  PVTimestampPlugin::create();
46  PVDeadbandPlugin::create();
47  }
48  return pvDatabaseMaster;
49 }
std::tr1::shared_ptr< PVDatabase > PVDatabasePtr
Definition: pvDatabase.h:43
PVStringArrayPtr epics::pvDatabase::PVDatabase::getRecordNames ( )

Get the names of all the records in the database.

Returns
The names.

Definition at line 122 of file pvDatabase.cpp.

123 {
125  PVStringArrayPtr xxx;
127  (getPVDataCreate()->createPVScalarArray(pvString));
128  size_t len = recordMap.size();
129  shared_vector<string> names(len);
130  PVRecordMap::iterator iter;
131  size_t i = 0;
132  for(iter = recordMap.begin(); iter!=recordMap.end(); ++iter) {
133  names[i++] = (*iter).first;
134  }
135  shared_vector<const string> temp(freeze(names));
136  pvStringArray->replace(temp);
137  return pvStringArray;
138 }
A holder for a contiguous piece of memory.
Definition: sharedVector.h:27
int i
Definition: scan.c:967
shared_ptr< T > static_pointer_cast(shared_ptr< U > const &r) BOOST_NOEXCEPT
Definition: shared_ptr.hpp:788
std::tr1::shared_ptr< PVStringArray > PVStringArrayPtr
Definition: pvData.h:1464
template class for all extensions of PVArray.
Definition: pvData.h:55
FORCE_INLINE const PVDataCreatePtr & getPVDataCreate()
Definition: pvData.h:1648
epics::pvDatabase::PVDatabase::POINTER_DEFINITIONS ( PVDatabase  )
bool epics::pvDatabase::PVDatabase::removeRecord ( PVRecordPtr const &  record)

Remove a record.

Parameters
recordThe record to remove.
Returns
true if record was removed.

Definition at line 108 of file pvDatabase.cpp.

109 {
110  if(record->getTraceLevel()>0) {
111  cout << "PVDatabase::removeRecord " << record->getRecordName() << endl;
112  }
114  PVRecordWPtr pvRecord = removeFromMap(record);
115  if(pvRecord.use_count()!=0) {
116  pvRecord.lock()->unlistenClients();
117  return true;
118  }
119  return false;
120 }
std::tr1::weak_ptr< PVRecord > PVRecordWPtr
Definition: pvDatabase.h:23

Friends And Related Function Documentation

friend class PVRecord
friend

Definition at line 514 of file pvDatabase.h.


The documentation for this class was generated from the following files: