Validator: add simple Result caching
This commit is contained in:
committed by
mdavidsaver
parent
e0d422ffd9
commit
31050952b6
@@ -227,14 +227,20 @@ bool NTScalarMultiChannel::is_a(PVStructurePtr const & pvStructure)
|
||||
return is_a(pvStructure->getStructure());
|
||||
}
|
||||
|
||||
static epicsThreadOnceId cachedResultOnceId = EPICS_THREAD_ONCE_INIT;
|
||||
static epicsThreadPrivateId cachedResultId;
|
||||
|
||||
bool NTScalarMultiChannel::isCompatible(StructureConstPtr const & structure)
|
||||
{
|
||||
if (!structure)
|
||||
return false;
|
||||
|
||||
Result result(structure);
|
||||
Result& result = Result::fromCache(&cachedResultOnceId, &cachedResultId);
|
||||
|
||||
return result
|
||||
if (result.wraps(structure))
|
||||
return result.valid();
|
||||
|
||||
return result.reset(structure)
|
||||
.is<Structure>()
|
||||
.has<ScalarArray>("value")
|
||||
.has<ScalarArray>("channelName")
|
||||
|
||||
Reference in New Issue
Block a user