diff --git a/src/copy/pvCopy.cpp b/src/copy/pvCopy.cpp index 7694ecf..0916878 100644 --- a/src/copy/pvCopy.cpp +++ b/src/copy/pvCopy.cpp @@ -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("_"); PVStructurePtr requestFieldPtr = pvRequest->getSubField("_"); + if (requestFieldPtr) { + requestHasMasterField = true; + } if (!masterFieldPtr && requestFieldPtr) { entireMaster = true; pvOptions = requestFieldPtr->getSubField("_options"); diff --git a/src/pv/pvStructureCopy.h b/src/pv/pvStructureCopy.h index 3ae37a3..8bce170 100644 --- a/src/pv/pvStructureCopy.h +++ b/src/pv/pvStructureCopy.h @@ -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,