implement copy instead of taking it from pvDataCPP; implement plugin support

This commit is contained in:
mrkraimer
2018-07-12 14:05:15 -04:00
parent 6239ef0c0c
commit 3e0282d956
17 changed files with 1863 additions and 17 deletions

View File

@@ -327,6 +327,7 @@ void ChannelGetLocal::get()
PVRecordPtr pvr(pvRecord.lock());
if(!pvr) throw std::logic_error("pvRecord is deleted");
try {
bool notifyClient = true;
bitSet->clear();
{
epicsGuard <PVRecord> guard(*pvr);
@@ -335,18 +336,29 @@ void ChannelGetLocal::get()
pvr->process();
pvr->endGroupPut();
}
pvCopy->updateCopySetBitSet(pvStructure, bitSet);
notifyClient = pvCopy->updateCopySetBitSet(pvStructure, bitSet);
}
if(firstTime) {
bitSet->clear();
bitSet->set(0);
firstTime = false;
}
requester->getDone(
Status::Ok,
getPtrSelf(),
pvStructure,
bitSet);
notifyClient = true;
}
if(notifyClient) {
requester->getDone(
Status::Ok,
getPtrSelf(),
pvStructure,
bitSet);
bitSet->clear();
} else {
BitSetPtr temp(new BitSet(bitSet->size()));
requester->getDone(
Status::Ok,
getPtrSelf(),
pvStructure,
temp);
}
if(pvr->getTraceLevel()>1)
{
cout << "ChannelGetLocal::get" << endl;