pvDatabase::removeRecord and pvRecord::remove changes;descructors now have at most a print statement

This commit is contained in:
mrkraimer
2020-02-10 06:15:59 -05:00
parent 42ba054e5f
commit 083dffac3c
9 changed files with 143 additions and 125 deletions

View File

@@ -56,14 +56,6 @@ PVDatabase::PVDatabase()
PVDatabase::~PVDatabase()
{
if(DEBUG_LEVEL>0) cout << "PVDatabase::~PVDatabase()\n";
size_t len = recordMap.size();
shared_vector<string> names(len);
PVRecordMap::iterator iter;
size_t i = 0;
for(iter = recordMap.begin(); iter!=recordMap.end(); ++iter) {
names[i++] = (*iter).first;
}
for(size_t i=0; i<len; ++i) removeRecord(findRecord(names[i]));
}
void PVDatabase::lock() {
@@ -100,7 +92,7 @@ bool PVDatabase::addRecord(PVRecordPtr const & record)
return true;
}
bool PVDatabase::removeRecord(PVRecordPtr const & record)
bool PVDatabase::removeRecord(PVRecordPtr const & record,bool callRemove)
{
if(record->getTraceLevel()>0) {
cout << "PVDatabase::removeRecord " << record->getRecordName() << endl;
@@ -110,6 +102,7 @@ bool PVDatabase::removeRecord(PVRecordPtr const & record)
PVRecordMap::iterator iter = recordMap.find(recordName);
if(iter!=recordMap.end()) {
PVRecordPtr pvRecord = (*iter).second;
if(callRemove) pvRecord->remove(false);
recordMap.erase(iter);
return true;
}