// Configuration application if required void CConfigurableDomains::apply(CParameterBlackboard* pParameterBlackboard, CSyncerSet& syncerSet, bool bForce) const { CAutoLog autoLog(this, "Applying configurations"); /// Delegate to domains // Start with domains that can be synchronized all at once (with passed syncer set) size_t uiChild; size_t uiNbConfigurableDomains = getNbChildren(); for (uiChild = 0; uiChild < uiNbConfigurableDomains; uiChild++) { const CConfigurableDomain* pChildConfigurableDomain = static_cast<const CConfigurableDomain*>(getChild(uiChild)); // Apply and collect syncers when relevant pChildConfigurableDomain->apply(pParameterBlackboard, &syncerSet, bForce); } // Synchronize those collected syncers syncerSet.sync(*pParameterBlackboard, false, NULL); // Then deal with domains that need to synchronize along apply for (uiChild = 0; uiChild < uiNbConfigurableDomains; uiChild++) { const CConfigurableDomain* pChildConfigurableDomain = static_cast<const CConfigurableDomain*>(getChild(uiChild)); // Apply and synchronize when relevant pChildConfigurableDomain->apply(pParameterBlackboard, NULL, bForce); } }
// Configuration application if required void CConfigurableDomains::apply(CParameterBlackboard *pParameterBlackboard, CSyncerSet &syncerSet, bool bForce, core::Results &infos) const { /// Delegate to domains // Start with domains that can be synchronized all at once (with passed syncer set) size_t uiNbConfigurableDomains = getNbChildren(); for (size_t child = 0; child < uiNbConfigurableDomains; child++) { const CConfigurableDomain *pChildConfigurableDomain = static_cast<const CConfigurableDomain *>(getChild(child)); std::string info; // Apply and collect syncers when relevant pChildConfigurableDomain->apply(pParameterBlackboard, &syncerSet, bForce, info); if (!info.empty()) { infos.push_back(info); } } // Synchronize those collected syncers syncerSet.sync(*pParameterBlackboard, false, nullptr); // Then deal with domains that need to synchronize along apply for (size_t child = 0; child < uiNbConfigurableDomains; child++) { const CConfigurableDomain *pChildConfigurableDomain = static_cast<const CConfigurableDomain *>(getChild(child)); std::string info; // Apply and synchronize when relevant pChildConfigurableDomain->apply(pParameterBlackboard, nullptr, bForce, info); if (!info.empty()) { infos.push_back(info); } } }