add interface to check if master field was requested
This commit is contained in:
@ -432,6 +432,7 @@ bool PVCopy::init(epics::pvData::PVStructurePtr const &pvRequest)
|
||||
PVStructurePtr pvMasterStructure = pvMaster;
|
||||
size_t len = pvRequest->getPVFields().size();
|
||||
bool entireMaster = false;
|
||||
requestHasMasterField = false;
|
||||
PVStructurePtr pvOptions;
|
||||
if(len==0) {
|
||||
entireMaster = true;
|
||||
@ -441,6 +442,9 @@ bool PVCopy::init(epics::pvData::PVStructurePtr const &pvRequest)
|
||||
// then assume the top level PV structure is requested
|
||||
PVStructurePtr masterFieldPtr = pvMaster->getSubField<PVStructure>("_");
|
||||
PVStructurePtr requestFieldPtr = pvRequest->getSubField<PVStructure>("_");
|
||||
if (requestFieldPtr) {
|
||||
requestHasMasterField = true;
|
||||
}
|
||||
if (!masterFieldPtr && requestFieldPtr) {
|
||||
entireMaster = true;
|
||||
pvOptions = requestFieldPtr->getSubField<PVStructure>("_options");
|
||||
|
@ -167,6 +167,10 @@ public:
|
||||
* name is the subField name and value is the subField value.
|
||||
*/
|
||||
epics::pvData::PVStructurePtr getOptions(std::size_t fieldOffset);
|
||||
/**
|
||||
* Is master field requested?
|
||||
*/
|
||||
bool isMasterFieldRequested() const {return requestHasMasterField;}
|
||||
/**
|
||||
* For debugging.
|
||||
*/
|
||||
@ -183,6 +187,7 @@ private:
|
||||
CopyNodePtr headNode;
|
||||
epics::pvData::PVStructurePtr cacheInitStructure;
|
||||
epics::pvData::BitSetPtr ignorechangeBitSet;
|
||||
bool requestHasMasterField;
|
||||
|
||||
void traverseMaster(
|
||||
CopyNodePtr const &node,
|
||||
|
Reference in New Issue
Block a user