1 /* 2 * Copyright (c) 2011-2014, Intel Corporation 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without modification, 6 * are permitted provided that the following conditions are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright notice, this 9 * list of conditions and the following disclaimer. 10 * 11 * 2. Redistributions in binary form must reproduce the above copyright notice, 12 * this list of conditions and the following disclaimer in the documentation and/or 13 * other materials provided with the distribution. 14 * 15 * 3. Neither the name of the copyright holder nor the names of its contributors 16 * may be used to endorse or promote products derived from this software without 17 * specific prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 #include "ParameterMgrPlatformConnector.h" 31 #include "ParameterMgr.h" 32 #include "ParameterMgrLogger.h" 33 #include <assert.h> 34 35 using std::string; 36 37 // Construction 38 CParameterMgrPlatformConnector::CParameterMgrPlatformConnector( 39 const string& strConfigurationFilePath) : 40 _pParameterMgr(new CParameterMgr(strConfigurationFilePath)), _bStarted(false), _pLogger(NULL) 41 { 42 // Logging 43 _pParameterMgrLogger = new CParameterMgrLogger<CParameterMgrPlatformConnector>(*this); 44 _pParameterMgr->setLogger(_pParameterMgrLogger); 45 } 46 47 CParameterMgrPlatformConnector::~CParameterMgrPlatformConnector() 48 { 49 delete _pParameterMgr; 50 delete _pParameterMgrLogger; 51 } 52 53 // Selection Criteria interface. Beware returned objects are lent, clients shall not delete them! 54 ISelectionCriterionTypeInterface* CParameterMgrPlatformConnector::createSelectionCriterionType(bool bIsInclusive) 55 { 56 assert(!_bStarted); 57 58 return _pParameterMgr->createSelectionCriterionType(bIsInclusive); 59 } 60 61 ISelectionCriterionInterface* CParameterMgrPlatformConnector::createSelectionCriterion(const string& strName, const ISelectionCriterionTypeInterface* pSelectionCriterionType) 62 { 63 assert(!_bStarted); 64 65 return _pParameterMgr->createSelectionCriterion(strName, static_cast<const CSelectionCriterionType*>(pSelectionCriterionType)); 66 } 67 68 // Selection criterion retrieval 69 ISelectionCriterionInterface* CParameterMgrPlatformConnector::getSelectionCriterion(const string& strName) const 70 { 71 return _pParameterMgr->getSelectionCriterion(strName); 72 } 73 74 // Configuration application 75 void CParameterMgrPlatformConnector::applyConfigurations() 76 { 77 assert(_bStarted); 78 79 _pParameterMgr->applyConfigurations(); 80 } 81 82 // Dynamic parameter handling 83 CParameterHandle* CParameterMgrPlatformConnector::createParameterHandle(const string& strPath, string& strError) const 84 { 85 assert(_bStarted); 86 87 return _pParameterMgr->createParameterHandle(strPath, strError); 88 } 89 90 // Logging 91 void CParameterMgrPlatformConnector::setLogger(CParameterMgrPlatformConnector::ILogger* pLogger) 92 { 93 _pLogger = pLogger; 94 } 95 96 bool CParameterMgrPlatformConnector::getForceNoRemoteInterface() const 97 { 98 return _pParameterMgr->getForceNoRemoteInterface(); 99 } 100 101 void CParameterMgrPlatformConnector::setForceNoRemoteInterface(bool bForceNoRemoteInterface) 102 { 103 _pParameterMgr->setForceNoRemoteInterface(bForceNoRemoteInterface); 104 } 105 106 bool CParameterMgrPlatformConnector::setFailureOnMissingSubsystem(bool bFail, string &strError) 107 { 108 if (_bStarted) { 109 110 strError = "Can not set missing subsystem policy while running"; 111 return false; 112 } 113 114 _pParameterMgr->setFailureOnMissingSubsystem(bFail); 115 return true; 116 } 117 118 bool CParameterMgrPlatformConnector::getFailureOnMissingSubsystem() 119 { 120 return _pParameterMgr->getFailureOnMissingSubsystem(); 121 } 122 123 bool CParameterMgrPlatformConnector::setFailureOnFailedSettingsLoad( 124 bool bFail, std::string& strError) 125 { 126 if (_bStarted) { 127 128 strError = "Can not set failure on failed settings load policy while running"; 129 return false; 130 } 131 132 _pParameterMgr->setFailureOnFailedSettingsLoad(bFail); 133 return true; 134 } 135 136 bool CParameterMgrPlatformConnector::getFailureOnFailedSettingsLoad() 137 { 138 return _pParameterMgr->getFailureOnFailedSettingsLoad(); 139 } 140 141 const string& CParameterMgrPlatformConnector::getSchemaFolderLocation() const 142 { 143 return _pParameterMgr->getSchemaFolderLocation(); 144 } 145 146 void CParameterMgrPlatformConnector::setSchemaFolderLocation(const string& strSchemaFolderLocation) 147 { 148 _pParameterMgr->setSchemaFolderLocation(strSchemaFolderLocation); 149 } 150 151 bool CParameterMgrPlatformConnector::setValidateSchemasOnStart( 152 bool bValidate, std::string& strError) 153 { 154 if (_bStarted) { 155 156 strError = "Can not enable xml validation after the start of the parameter-framework"; 157 return false; 158 } 159 160 _pParameterMgr->setValidateSchemasOnStart(bValidate); 161 return true; 162 } 163 164 bool CParameterMgrPlatformConnector::getValidateSchemasOnStart() 165 { 166 return _pParameterMgr->getValidateSchemasOnStart(); 167 } 168 169 // Start 170 bool CParameterMgrPlatformConnector::start(string& strError) 171 { 172 // Create data structure 173 if (!_pParameterMgr->load(strError)) { 174 175 return false; 176 } 177 178 _bStarted = true; 179 180 return true; 181 } 182 183 // Started state 184 bool CParameterMgrPlatformConnector::isStarted() const 185 { 186 return _bStarted; 187 } 188 189 // Private logging 190 void CParameterMgrPlatformConnector::doLog(bool bIsWarning, const string& strLog) 191 { 192 if (_pLogger) { 193 194 _pLogger->log(bIsWarning, strLog); 195 } 196 } 197