193250d172612c405135d56ffd306deae5ebc6df1Kevin Rocard/* 29368eea42a1afb01dd44110582f997115b50e742François Gaffie * Copyright (c) 2011-2015, Intel Corporation 3b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * All rights reserved. 46ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli * 5b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * Redistribution and use in source and binary forms, with or without modification, 6b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * are permitted provided that the following conditions are met: 76ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli * 8b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * 1. Redistributions of source code must retain the above copyright notice, this 9b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * list of conditions and the following disclaimer. 106ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli * 11b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * 2. Redistributions in binary form must reproduce the above copyright notice, 12b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * this list of conditions and the following disclaimer in the documentation and/or 13b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * other materials provided with the distribution. 14b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * 15b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * 3. Neither the name of the copyright holder nor the names of its contributors 16b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * may be used to endorse or promote products derived from this software without 17b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * specific prior written permission. 18b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * 19b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 20b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 23b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 24b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 25b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 26b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 28b76c9d6de717a9a1cfd94e7a8eca7ee4a2035cd7David Wagner * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 296ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli */ 306ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli#include "VirtualSubsystem.h" 316ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli#include "VirtualSyncer.h" 329368eea42a1afb01dd44110582f997115b50e742François Gaffie#include "SyncerSet.h" 336ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli 346ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli#define base CSubsystem 356ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli 36d9526499d6ab53b7d13d1434f748f6f2161c2e0aSebastien Gonzalveusing std::string; 37d9526499d6ab53b7d13d1434f748f6f2161c2e0aSebastien Gonzalve 389368eea42a1afb01dd44110582f997115b50e742François GaffieCVirtualSubsystem::CVirtualSubsystem(const string &strName, core::log::Logger &logger) 399368eea42a1afb01dd44110582f997115b50e742François Gaffie : base(strName, logger), _pVirtualSyncer(new CVirtualSyncer(this)) 406ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli{ 419368eea42a1afb01dd44110582f997115b50e742François Gaffie logger.warning() << "Subsystem " << strName 429368eea42a1afb01dd44110582f997115b50e742François Gaffie << " loaded as virtual. " 439368eea42a1afb01dd44110582f997115b50e742François Gaffie "Its parameters will not be synced with any external system."; 446ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli} 456ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli 466ccab9d382c08323fb1f000d859a696f05719c92Patrick BenavoliCVirtualSubsystem::~CVirtualSubsystem() 476ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli{ 486ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli delete _pVirtualSyncer; 496ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli} 506ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli 516ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli// Syncer 529368eea42a1afb01dd44110582f997115b50e742François GaffieISyncer *CVirtualSubsystem::getSyncer() const 536ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli{ 546ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli return _pVirtualSyncer; 556ccab9d382c08323fb1f000d859a696f05719c92Patrick Benavoli} 56e7a903ef0a5ee2b9d51e6f86d32c704b9ff16c21Patrick Benavoli 579368eea42a1afb01dd44110582f997115b50e742François Gaffievoid CVirtualSubsystem::fillSyncerSetFromDescendant(CSyncerSet &syncerSet) const 58e7a903ef0a5ee2b9d51e6f86d32c704b9ff16c21Patrick Benavoli{ 599368eea42a1afb01dd44110582f997115b50e742François Gaffie syncerSet += _pVirtualSyncer; 609368eea42a1afb01dd44110582f997115b50e742François Gaffie} 61e7a903ef0a5ee2b9d51e6f86d32c704b9ff16c21Patrick Benavoli 629368eea42a1afb01dd44110582f997115b50e742François Gaffie// From IMapper 639368eea42a1afb01dd44110582f997115b50e742François Gaffiebool CVirtualSubsystem::mapBegin(CInstanceConfigurableElement * /*elem*/, bool &bKeepDiving, 649368eea42a1afb01dd44110582f997115b50e742François Gaffie string & /*strError*/) 659368eea42a1afb01dd44110582f997115b50e742François Gaffie{ 66e7a903ef0a5ee2b9d51e6f86d32c704b9ff16c21Patrick Benavoli // Do nothing: prevent any subsystem object from being mapped 67e7a903ef0a5ee2b9d51e6f86d32c704b9ff16c21Patrick Benavoli 68e7a903ef0a5ee2b9d51e6f86d32c704b9ff16c21Patrick Benavoli // Stop diving 69e7a903ef0a5ee2b9d51e6f86d32c704b9ff16c21Patrick Benavoli bKeepDiving = false; 70e7a903ef0a5ee2b9d51e6f86d32c704b9ff16c21Patrick Benavoli 71e7a903ef0a5ee2b9d51e6f86d32c704b9ff16c21Patrick Benavoli return true; 72e7a903ef0a5ee2b9d51e6f86d32c704b9ff16c21Patrick Benavoli} 73e7a903ef0a5ee2b9d51e6f86d32c704b9ff16c21Patrick Benavoli 74e7a903ef0a5ee2b9d51e6f86d32c704b9ff16c21Patrick Benavolivoid CVirtualSubsystem::mapEnd() 75e7a903ef0a5ee2b9d51e6f86d32c704b9ff16c21Patrick Benavoli{ 76e7a903ef0a5ee2b9d51e6f86d32c704b9ff16c21Patrick Benavoli // Do nothing 77e7a903ef0a5ee2b9d51e6f86d32c704b9ff16c21Patrick Benavoli} 78