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