1*c33452fbSAndroid Build Coastguard Worker /* 2*c33452fbSAndroid Build Coastguard Worker * Copyright (c) 2011-2015, Intel Corporation 3*c33452fbSAndroid Build Coastguard Worker * All rights reserved. 4*c33452fbSAndroid Build Coastguard Worker * 5*c33452fbSAndroid Build Coastguard Worker * Redistribution and use in source and binary forms, with or without modification, 6*c33452fbSAndroid Build Coastguard Worker * are permitted provided that the following conditions are met: 7*c33452fbSAndroid Build Coastguard Worker * 8*c33452fbSAndroid Build Coastguard Worker * 1. Redistributions of source code must retain the above copyright notice, this 9*c33452fbSAndroid Build Coastguard Worker * list of conditions and the following disclaimer. 10*c33452fbSAndroid Build Coastguard Worker * 11*c33452fbSAndroid Build Coastguard Worker * 2. Redistributions in binary form must reproduce the above copyright notice, 12*c33452fbSAndroid Build Coastguard Worker * this list of conditions and the following disclaimer in the documentation and/or 13*c33452fbSAndroid Build Coastguard Worker * other materials provided with the distribution. 14*c33452fbSAndroid Build Coastguard Worker * 15*c33452fbSAndroid Build Coastguard Worker * 3. Neither the name of the copyright holder nor the names of its contributors 16*c33452fbSAndroid Build Coastguard Worker * may be used to endorse or promote products derived from this software without 17*c33452fbSAndroid Build Coastguard Worker * specific prior written permission. 18*c33452fbSAndroid Build Coastguard Worker * 19*c33452fbSAndroid Build Coastguard Worker * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 20*c33452fbSAndroid Build Coastguard Worker * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21*c33452fbSAndroid Build Coastguard Worker * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22*c33452fbSAndroid Build Coastguard Worker * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 23*c33452fbSAndroid Build Coastguard Worker * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 24*c33452fbSAndroid Build Coastguard Worker * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 25*c33452fbSAndroid Build Coastguard Worker * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 26*c33452fbSAndroid Build Coastguard Worker * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27*c33452fbSAndroid Build Coastguard Worker * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 28*c33452fbSAndroid Build Coastguard Worker * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29*c33452fbSAndroid Build Coastguard Worker */ 30*c33452fbSAndroid Build Coastguard Worker #pragma once 31*c33452fbSAndroid Build Coastguard Worker 32*c33452fbSAndroid Build Coastguard Worker #include "XmlSerializingContext.h" 33*c33452fbSAndroid Build Coastguard Worker #include "XmlDomainImportContext.h" 34*c33452fbSAndroid Build Coastguard Worker #include "XmlDomainExportContext.h" 35*c33452fbSAndroid Build Coastguard Worker #include "SyncerSet.h" 36*c33452fbSAndroid Build Coastguard Worker #include "Results.h" 37*c33452fbSAndroid Build Coastguard Worker #include <list> 38*c33452fbSAndroid Build Coastguard Worker #include <set> 39*c33452fbSAndroid Build Coastguard Worker #include <map> 40*c33452fbSAndroid Build Coastguard Worker #include <string> 41*c33452fbSAndroid Build Coastguard Worker 42*c33452fbSAndroid Build Coastguard Worker class CConfigurableElement; 43*c33452fbSAndroid Build Coastguard Worker class CDomainConfiguration; 44*c33452fbSAndroid Build Coastguard Worker class CParameterBlackboard; 45*c33452fbSAndroid Build Coastguard Worker class CSelectionCriteriaDefinition; 46*c33452fbSAndroid Build Coastguard Worker 47*c33452fbSAndroid Build Coastguard Worker class CConfigurableDomain : public CElement 48*c33452fbSAndroid Build Coastguard Worker { 49*c33452fbSAndroid Build Coastguard Worker typedef std::list<CConfigurableElement *>::const_iterator ConfigurableElementListIterator; 50*c33452fbSAndroid Build Coastguard Worker typedef std::map<const CConfigurableElement *, CSyncerSet *>::const_iterator 51*c33452fbSAndroid Build Coastguard Worker ConfigurableElementToSyncerSetMapIterator; 52*c33452fbSAndroid Build Coastguard Worker 53*c33452fbSAndroid Build Coastguard Worker public: 54*c33452fbSAndroid Build Coastguard Worker CConfigurableDomain() = default; 55*c33452fbSAndroid Build Coastguard Worker CConfigurableDomain(const std::string &strName); 56*c33452fbSAndroid Build Coastguard Worker ~CConfigurableDomain() override; 57*c33452fbSAndroid Build Coastguard Worker 58*c33452fbSAndroid Build Coastguard Worker // Sequence awareness 59*c33452fbSAndroid Build Coastguard Worker void setSequenceAwareness(bool bSequenceAware); 60*c33452fbSAndroid Build Coastguard Worker bool getSequenceAwareness() const; 61*c33452fbSAndroid Build Coastguard Worker 62*c33452fbSAndroid Build Coastguard Worker // Configuration Management 63*c33452fbSAndroid Build Coastguard Worker bool createConfiguration(const std::string &strName, 64*c33452fbSAndroid Build Coastguard Worker const CParameterBlackboard *pMainBlackboard, std::string &strError); 65*c33452fbSAndroid Build Coastguard Worker bool deleteConfiguration(const std::string &strName, std::string &strError); 66*c33452fbSAndroid Build Coastguard Worker bool renameConfiguration(const std::string &strName, const std::string &strNewName, 67*c33452fbSAndroid Build Coastguard Worker std::string &strError); 68*c33452fbSAndroid Build Coastguard Worker 69*c33452fbSAndroid Build Coastguard Worker /** Restore a configuration 70*c33452fbSAndroid Build Coastguard Worker * 71*c33452fbSAndroid Build Coastguard Worker * @param[in] configurationName the configuration name 72*c33452fbSAndroid Build Coastguard Worker * @param[in] mainBlackboard the application main blackboard 73*c33452fbSAndroid Build Coastguard Worker * @param[in] autoSync boolean which indicates if auto sync mechanism is on 74*c33452fbSAndroid Build Coastguard Worker * @param[out] errors, errors encountered during restoration 75*c33452fbSAndroid Build Coastguard Worker * @return true if success false otherwise 76*c33452fbSAndroid Build Coastguard Worker */ 77*c33452fbSAndroid Build Coastguard Worker bool restoreConfiguration(const std::string &configurationName, 78*c33452fbSAndroid Build Coastguard Worker CParameterBlackboard *mainBlackboard, bool autoSync, 79*c33452fbSAndroid Build Coastguard Worker core::Results &errors) const; 80*c33452fbSAndroid Build Coastguard Worker 81*c33452fbSAndroid Build Coastguard Worker bool saveConfiguration(const std::string &strName, const CParameterBlackboard *pMainBlackboard, 82*c33452fbSAndroid Build Coastguard Worker std::string &strError); 83*c33452fbSAndroid Build Coastguard Worker bool setElementSequence(const std::string &strConfiguration, 84*c33452fbSAndroid Build Coastguard Worker const std::vector<std::string> &astrNewElementSequence, 85*c33452fbSAndroid Build Coastguard Worker std::string &strError); 86*c33452fbSAndroid Build Coastguard Worker bool getElementSequence(const std::string &strConfiguration, std::string &strResult) const; 87*c33452fbSAndroid Build Coastguard Worker bool setApplicationRule(const std::string &strConfiguration, 88*c33452fbSAndroid Build Coastguard Worker const std::string &strApplicationRule, 89*c33452fbSAndroid Build Coastguard Worker const CSelectionCriteriaDefinition *pSelectionCriteriaDefinition, 90*c33452fbSAndroid Build Coastguard Worker std::string &strError); 91*c33452fbSAndroid Build Coastguard Worker bool clearApplicationRule(const std::string &strConfiguration, std::string &strError); 92*c33452fbSAndroid Build Coastguard Worker bool getApplicationRule(const std::string &strConfiguration, std::string &strResult) const; 93*c33452fbSAndroid Build Coastguard Worker 94*c33452fbSAndroid Build Coastguard Worker // Last applied configuration name 95*c33452fbSAndroid Build Coastguard Worker std::string getLastAppliedConfigurationName() const; 96*c33452fbSAndroid Build Coastguard Worker 97*c33452fbSAndroid Build Coastguard Worker // Pending configuration name 98*c33452fbSAndroid Build Coastguard Worker std::string getPendingConfigurationName() const; 99*c33452fbSAndroid Build Coastguard Worker 100*c33452fbSAndroid Build Coastguard Worker // Associated Configurable elements 101*c33452fbSAndroid Build Coastguard Worker void gatherConfigurableElements( 102*c33452fbSAndroid Build Coastguard Worker std::set<const CConfigurableElement *> &configurableElementSet) const; 103*c33452fbSAndroid Build Coastguard Worker void listAssociatedToElements(std::string &strResult) const; 104*c33452fbSAndroid Build Coastguard Worker 105*c33452fbSAndroid Build Coastguard Worker /** Add a configurable element to the domain 106*c33452fbSAndroid Build Coastguard Worker * 107*c33452fbSAndroid Build Coastguard Worker * @param[in] pConfigurableElement pointer to the element to add 108*c33452fbSAndroid Build Coastguard Worker * @param[in] pMainBlackboard pointer to the application main blackboard 109*c33452fbSAndroid Build Coastguard Worker * @param[out] infos useful information we can provide to client 110*c33452fbSAndroid Build Coastguard Worker * @return true if succeed false otherwise 111*c33452fbSAndroid Build Coastguard Worker */ 112*c33452fbSAndroid Build Coastguard Worker bool addConfigurableElement(CConfigurableElement *pConfigurableElement, 113*c33452fbSAndroid Build Coastguard Worker const CParameterBlackboard *pMainBlackboard, core::Results &infos); 114*c33452fbSAndroid Build Coastguard Worker 115*c33452fbSAndroid Build Coastguard Worker bool removeConfigurableElement(CConfigurableElement *pConfigurableElement, 116*c33452fbSAndroid Build Coastguard Worker std::string &strError); 117*c33452fbSAndroid Build Coastguard Worker 118*c33452fbSAndroid Build Coastguard Worker // Blackboard Configuration and Base Offset retrieval 119*c33452fbSAndroid Build Coastguard Worker CParameterBlackboard *findConfigurationBlackboard( 120*c33452fbSAndroid Build Coastguard Worker const std::string &strConfiguration, const CConfigurableElement *pConfigurableElement, 121*c33452fbSAndroid Build Coastguard Worker size_t &baseOffset, bool &bIsLastApplied, std::string &strError) const; 122*c33452fbSAndroid Build Coastguard Worker 123*c33452fbSAndroid Build Coastguard Worker /** Split the domain in two. 124*c33452fbSAndroid Build Coastguard Worker * Remove an element of a domain and create a new domain which owns the element. 125*c33452fbSAndroid Build Coastguard Worker * 126*c33452fbSAndroid Build Coastguard Worker * @param[in] pConfigurableElement pointer to the element to remove 127*c33452fbSAndroid Build Coastguard Worker * @param[out] infos useful information we can provide to client 128*c33452fbSAndroid Build Coastguard Worker * @return true if succeed false otherwise 129*c33452fbSAndroid Build Coastguard Worker */ 130*c33452fbSAndroid Build Coastguard Worker bool split(CConfigurableElement *pConfigurableElement, core::Results &infos); 131*c33452fbSAndroid Build Coastguard Worker 132*c33452fbSAndroid Build Coastguard Worker // Ensure validity on whole domain from main blackboard 133*c33452fbSAndroid Build Coastguard Worker void validate(const CParameterBlackboard *pMainBlackboard); 134*c33452fbSAndroid Build Coastguard Worker 135*c33452fbSAndroid Build Coastguard Worker /** Apply the configuration if required 136*c33452fbSAndroid Build Coastguard Worker * 137*c33452fbSAndroid Build Coastguard Worker * @param[in] pParameterBlackboard the blackboard to synchronize 138*c33452fbSAndroid Build Coastguard Worker * @param[in] pSyncerSet pointer to the set containing application syncers 139*c33452fbSAndroid Build Coastguard Worker * @param[in] bForced boolean used to force configuration application 140*c33452fbSAndroid Build Coastguard Worker * @param[out] info string containing useful information we can provide to client 141*c33452fbSAndroid Build Coastguard Worker */ 142*c33452fbSAndroid Build Coastguard Worker void apply(CParameterBlackboard *pParameterBlackboard, CSyncerSet *pSyncerSet, bool bForced, 143*c33452fbSAndroid Build Coastguard Worker std::string &info) const; 144*c33452fbSAndroid Build Coastguard Worker 145*c33452fbSAndroid Build Coastguard Worker // Return applicable configuration validity for given configurable element 146*c33452fbSAndroid Build Coastguard Worker bool isApplicableConfigurationValid(const CConfigurableElement *pConfigurableElement) const; 147*c33452fbSAndroid Build Coastguard Worker 148*c33452fbSAndroid Build Coastguard Worker // From IXmlSink 149*c33452fbSAndroid Build Coastguard Worker bool fromXml(const CXmlElement &xmlElement, 150*c33452fbSAndroid Build Coastguard Worker CXmlSerializingContext &serializingContext) override; 151*c33452fbSAndroid Build Coastguard Worker 152*c33452fbSAndroid Build Coastguard Worker // From IXmlSource 153*c33452fbSAndroid Build Coastguard Worker void toXml(CXmlElement &xmlElement, CXmlSerializingContext &serializingContext) const override; 154*c33452fbSAndroid Build Coastguard Worker void childrenToXml(CXmlElement &xmlElement, 155*c33452fbSAndroid Build Coastguard Worker CXmlSerializingContext &serializingContext) const override; 156*c33452fbSAndroid Build Coastguard Worker 157*c33452fbSAndroid Build Coastguard Worker // Class kind 158*c33452fbSAndroid Build Coastguard Worker std::string getKind() const override; 159*c33452fbSAndroid Build Coastguard Worker 160*c33452fbSAndroid Build Coastguard Worker protected: 161*c33452fbSAndroid Build Coastguard Worker // Content dumping 162*c33452fbSAndroid Build Coastguard Worker std::string logValue(utility::ErrorContext &errorContext) const override; 163*c33452fbSAndroid Build Coastguard Worker 164*c33452fbSAndroid Build Coastguard Worker private: 165*c33452fbSAndroid Build Coastguard Worker // Get pending configuration 166*c33452fbSAndroid Build Coastguard Worker const CDomainConfiguration *getPendingConfiguration() const; 167*c33452fbSAndroid Build Coastguard Worker 168*c33452fbSAndroid Build Coastguard Worker // Search for an applicable configuration 169*c33452fbSAndroid Build Coastguard Worker const CDomainConfiguration *findApplicableDomainConfiguration() const; 170*c33452fbSAndroid Build Coastguard Worker 171*c33452fbSAndroid Build Coastguard Worker // Returns true if children dynamic creation is to be dealt with (here, will allow child 172*c33452fbSAndroid Build Coastguard Worker // deletion upon clean) 173*c33452fbSAndroid Build Coastguard Worker bool childrenAreDynamic() const override; 174*c33452fbSAndroid Build Coastguard Worker 175*c33452fbSAndroid Build Coastguard Worker // Ensure validity on areas related to configurable element 176*c33452fbSAndroid Build Coastguard Worker void validateAreas(const CConfigurableElement *pConfigurableElement, 177*c33452fbSAndroid Build Coastguard Worker const CParameterBlackboard *pMainBlackboard); 178*c33452fbSAndroid Build Coastguard Worker 179*c33452fbSAndroid Build Coastguard Worker // Attempt validation for all configurable element's areas, relying on already existing valid 180*c33452fbSAndroid Build Coastguard Worker // configuration inside domain 181*c33452fbSAndroid Build Coastguard Worker void autoValidateAll(); 182*c33452fbSAndroid Build Coastguard Worker 183*c33452fbSAndroid Build Coastguard Worker // Attempt validation for one configurable element's areas, relying on already existing valid 184*c33452fbSAndroid Build Coastguard Worker // configuration inside domain 185*c33452fbSAndroid Build Coastguard Worker void autoValidateAreas(const CConfigurableElement *pConfigurableElement); 186*c33452fbSAndroid Build Coastguard Worker 187*c33452fbSAndroid Build Coastguard Worker // Attempt configuration validation for all configurable elements' areas, relying on already 188*c33452fbSAndroid Build Coastguard Worker // existing valid configuration inside domain 189*c33452fbSAndroid Build Coastguard Worker bool autoValidateConfiguration(CDomainConfiguration *pDomainConfiguration); 190*c33452fbSAndroid Build Coastguard Worker 191*c33452fbSAndroid Build Coastguard Worker // Search for a valid configuration for given configurable element 192*c33452fbSAndroid Build Coastguard Worker const CDomainConfiguration *findValidDomainConfiguration( 193*c33452fbSAndroid Build Coastguard Worker const CConfigurableElement *pConfigurableElement) const; 194*c33452fbSAndroid Build Coastguard Worker 195*c33452fbSAndroid Build Coastguard Worker // In case configurable element was removed 196*c33452fbSAndroid Build Coastguard Worker void computeSyncSet(); 197*c33452fbSAndroid Build Coastguard Worker 198*c33452fbSAndroid Build Coastguard Worker // Check configurable element already attached 199*c33452fbSAndroid Build Coastguard Worker bool containsConfigurableElement( 200*c33452fbSAndroid Build Coastguard Worker const CConfigurableElement *pConfigurableCandidateElement) const; 201*c33452fbSAndroid Build Coastguard Worker 202*c33452fbSAndroid Build Coastguard Worker /** Merge any descended configurable element to this one 203*c33452fbSAndroid Build Coastguard Worker * 204*c33452fbSAndroid Build Coastguard Worker * @param[in] newElement pointer to element which has potential descendants which can be merged 205*c33452fbSAndroid Build Coastguard Worker * @param[out] infos useful information we can provide to client 206*c33452fbSAndroid Build Coastguard Worker */ 207*c33452fbSAndroid Build Coastguard Worker void mergeAlreadyAssociatedDescendantConfigurableElements(CConfigurableElement *newElement, 208*c33452fbSAndroid Build Coastguard Worker core::Results &infos); 209*c33452fbSAndroid Build Coastguard Worker 210*c33452fbSAndroid Build Coastguard Worker void mergeConfigurations(CConfigurableElement *pToConfigurableElement, 211*c33452fbSAndroid Build Coastguard Worker CConfigurableElement *pFromConfigurableElement); 212*c33452fbSAndroid Build Coastguard Worker 213*c33452fbSAndroid Build Coastguard Worker /** Actually realize the association between the domain and a configurable element 214*c33452fbSAndroid Build Coastguard Worker * 215*c33452fbSAndroid Build Coastguard Worker * @param[in] pConfigurableElement pointer to the element to add 216*c33452fbSAndroid Build Coastguard Worker * @param[out] infos useful information we can provide to client 217*c33452fbSAndroid Build Coastguard Worker * @param[in] (optional) pMainBlackboard, pointer to the application main blackboard 218*c33452fbSAndroid Build Coastguard Worker * Default value is NULL, when provided, blackboard area concerning the configurable 219*c33452fbSAndroid Build Coastguard Worker * element are validated. 220*c33452fbSAndroid Build Coastguard Worker */ 221*c33452fbSAndroid Build Coastguard Worker void doAddConfigurableElement(CConfigurableElement *pConfigurableElement, core::Results &infos, 222*c33452fbSAndroid Build Coastguard Worker const CParameterBlackboard *pMainBlackboard = nullptr); 223*c33452fbSAndroid Build Coastguard Worker 224*c33452fbSAndroid Build Coastguard Worker void doRemoveConfigurableElement(CConfigurableElement *pConfigurableElement, 225*c33452fbSAndroid Build Coastguard Worker bool bRecomputeSyncSet); 226*c33452fbSAndroid Build Coastguard Worker 227*c33452fbSAndroid Build Coastguard Worker // XML parsing 228*c33452fbSAndroid Build Coastguard Worker /** 229*c33452fbSAndroid Build Coastguard Worker * Deserialize domain configurations from an Xml document and add them to 230*c33452fbSAndroid Build Coastguard Worker * the domain. 231*c33452fbSAndroid Build Coastguard Worker * 232*c33452fbSAndroid Build Coastguard Worker * @param[in] xmlElement the XML element to be parsed 233*c33452fbSAndroid Build Coastguard Worker * @param[in] serializingContext context for the deserialization 234*c33452fbSAndroid Build Coastguard Worker * 235*c33452fbSAndroid Build Coastguard Worker * @return false if an error occurs, true otherwise. 236*c33452fbSAndroid Build Coastguard Worker */ 237*c33452fbSAndroid Build Coastguard Worker bool parseDomainConfigurations(const CXmlElement &xmlElement, 238*c33452fbSAndroid Build Coastguard Worker CXmlDomainImportContext &serializingContext); 239*c33452fbSAndroid Build Coastguard Worker /** 240*c33452fbSAndroid Build Coastguard Worker * Deserialize domain elements from an Xml document and add them to 241*c33452fbSAndroid Build Coastguard Worker * the domain. 242*c33452fbSAndroid Build Coastguard Worker * 243*c33452fbSAndroid Build Coastguard Worker * @param[in] xmlElement the XML element to be parsed 244*c33452fbSAndroid Build Coastguard Worker * @param[in] serializingContext context for the deserialization 245*c33452fbSAndroid Build Coastguard Worker * 246*c33452fbSAndroid Build Coastguard Worker * @return false if an error occurs, true otherwise. 247*c33452fbSAndroid Build Coastguard Worker */ 248*c33452fbSAndroid Build Coastguard Worker bool parseConfigurableElements(const CXmlElement &xmlElement, 249*c33452fbSAndroid Build Coastguard Worker CXmlDomainImportContext &serializingContext); 250*c33452fbSAndroid Build Coastguard Worker /** 251*c33452fbSAndroid Build Coastguard Worker * Deserialize settings from an Xml document and add them to 252*c33452fbSAndroid Build Coastguard Worker * the domain. 253*c33452fbSAndroid Build Coastguard Worker * 254*c33452fbSAndroid Build Coastguard Worker * @param[in] xmlElement the XML element to be parsed 255*c33452fbSAndroid Build Coastguard Worker * @param[in] xmlDomainImportContext context for the deserialization 256*c33452fbSAndroid Build Coastguard Worker * 257*c33452fbSAndroid Build Coastguard Worker * @return false if an error occurs, true otherwise. 258*c33452fbSAndroid Build Coastguard Worker */ 259*c33452fbSAndroid Build Coastguard Worker bool parseSettings(const CXmlElement &xmlElement, CXmlDomainImportContext &serializingContext); 260*c33452fbSAndroid Build Coastguard Worker 261*c33452fbSAndroid Build Coastguard Worker // XML composing 262*c33452fbSAndroid Build Coastguard Worker void composeDomainConfigurations(CXmlElement &xmlElement, 263*c33452fbSAndroid Build Coastguard Worker CXmlSerializingContext &serializingContext) const; 264*c33452fbSAndroid Build Coastguard Worker void composeConfigurableElements(CXmlElement &xmlElement) const; 265*c33452fbSAndroid Build Coastguard Worker void composeSettings(CXmlElement &xmlElement, CXmlDomainExportContext &context) const; 266*c33452fbSAndroid Build Coastguard Worker 267*c33452fbSAndroid Build Coastguard Worker // Syncer set retrieval from configurable element 268*c33452fbSAndroid Build Coastguard Worker CSyncerSet *getSyncerSet(const CConfigurableElement *pConfigurableElement) const; 269*c33452fbSAndroid Build Coastguard Worker 270*c33452fbSAndroid Build Coastguard Worker // Configuration retrieval 271*c33452fbSAndroid Build Coastguard Worker CDomainConfiguration *findConfiguration(const std::string &strConfiguration, 272*c33452fbSAndroid Build Coastguard Worker std::string &strError); 273*c33452fbSAndroid Build Coastguard Worker const CDomainConfiguration *findConfiguration(const std::string &strConfiguration, 274*c33452fbSAndroid Build Coastguard Worker std::string &strError) const; 275*c33452fbSAndroid Build Coastguard Worker 276*c33452fbSAndroid Build Coastguard Worker // Configurable elements 277*c33452fbSAndroid Build Coastguard Worker std::list<CConfigurableElement *> _configurableElementList; 278*c33452fbSAndroid Build Coastguard Worker 279*c33452fbSAndroid Build Coastguard Worker // Associated syncer sets 280*c33452fbSAndroid Build Coastguard Worker std::map<const CConfigurableElement *, CSyncerSet *> _configurableElementToSyncerSetMap; 281*c33452fbSAndroid Build Coastguard Worker 282*c33452fbSAndroid Build Coastguard Worker // Sequence awareness 283*c33452fbSAndroid Build Coastguard Worker bool _bSequenceAware{false}; 284*c33452fbSAndroid Build Coastguard Worker 285*c33452fbSAndroid Build Coastguard Worker // Syncer set used to ensure propoer synchronization of restored configurable elements 286*c33452fbSAndroid Build Coastguard Worker CSyncerSet _syncerSet; 287*c33452fbSAndroid Build Coastguard Worker 288*c33452fbSAndroid Build Coastguard Worker // Last applied configuration 289*c33452fbSAndroid Build Coastguard Worker mutable const CDomainConfiguration *_pLastAppliedConfiguration{nullptr}; 290*c33452fbSAndroid Build Coastguard Worker }; 291