/* * This file was generated by the CommonAPI Generators. * Used org.genivi.commonapi.core 3.1.2.v201507021046. * Used org.franca.core 0.9.1.201412191134. * * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. * If a copy of the MPL was not distributed with this file, You can obtain one at * http://mozilla.org/MPL/2.0/. */ #include #include namespace v1_0 { namespace commonapi { namespace tests { namespace managed { std::shared_ptr createSecondRootDBusStubAdapter( const CommonAPI::DBus::DBusAddress &_address, const std::shared_ptr &_connection, const std::shared_ptr &_stub) { return std::make_shared(_address, _connection, _stub); } INITIALIZER(registerSecondRootDBusStubAdapter) { CommonAPI::DBus::Factory::get()->registerStubAdapterCreateMethod( SecondRoot::getInterface(), &createSecondRootDBusStubAdapter); } SecondRootDBusStubAdapterInternal::~SecondRootDBusStubAdapterInternal() { deactivateManagedInstances(); SecondRootDBusStubAdapterHelper::deinit(); } void SecondRootDBusStubAdapterInternal::deactivateManagedInstances() { std::set::iterator iter; std::set::iterator iterNext; iter = registeredLeafInterfaceInstances.begin(); while (iter != registeredLeafInterfaceInstances.end()) { iterNext = std::next(iter); if (deregisterManagedStubLeafInterface(*iter)) { iter = iterNext; } else { iter++; } } } const char* SecondRootDBusStubAdapterInternal::getMethodsDBusIntrospectionXmlData() const { static const std::string introspectionData = "\n" "" "\n" "" ; return introspectionData.c_str(); } CommonAPI::DBus::DBusGetAttributeStubDispatcher< SecondRootStub, CommonAPI::Version > SecondRootDBusStubAdapterInternal::getSecondRootInterfaceVersionStubDispatcher(&SecondRootStub::getInterfaceVersion, "uu"); const SecondRootDBusStubAdapterHelper::StubDispatcherTable& SecondRootDBusStubAdapterInternal::getStubDispatcherTable() { return stubDispatcherTable_; } const CommonAPI::DBus::StubAttributeTable& SecondRootDBusStubAdapterInternal::getStubAttributeTable() { return stubAttributeTable_; } bool SecondRootDBusStubAdapterInternal::registerManagedStubLeafInterface(std::shared_ptr _stub, const std::string &_instance) { if (registeredLeafInterfaceInstances.find(_instance) == registeredLeafInterfaceInstances.end()) { std::string itsAddress = "local:commonapi.tests.managed.LeafInterface:" + _instance; CommonAPI::DBus::DBusAddress itsDBusAddress; CommonAPI::DBus::DBusAddressTranslator::get()->translate(itsAddress, itsDBusAddress); std::string objectPath(itsDBusAddress.getObjectPath()); std::string adapterObjectPath(getDBusAddress().getObjectPath()); if (objectPath.compare(0, adapterObjectPath.length(), adapterObjectPath) == 0) { std::shared_ptr itsFactory = CommonAPI::DBus::Factory::get(); auto stubAdapter = itsFactory->createDBusStubAdapter(_stub, "commonapi.tests.managed.LeafInterface", itsDBusAddress, connection_); bool isRegistered = itsFactory->registerManagedService(stubAdapter); if (isRegistered) { bool isExported = connection_->getDBusObjectManager()->exportManagedDBusStubAdapter(adapterObjectPath, stubAdapter); if (isExported) { registeredLeafInterfaceInstances.insert(_instance); return true; } else { itsFactory->unregisterManagedService(itsAddress); } } } } return false; } bool SecondRootDBusStubAdapterInternal::deregisterManagedStubLeafInterface(const std::string &_instance) { std::string itsAddress = "local:commonapi.tests.managed.LeafInterface:" + _instance; if (registeredLeafInterfaceInstances.find(_instance) != registeredLeafInterfaceInstances.end()) { std::shared_ptr itsFactory = CommonAPI::DBus::Factory::get(); std::shared_ptr stubAdapter = itsFactory->getRegisteredService(itsAddress); if (stubAdapter) { connection_->getDBusObjectManager()->unexportManagedDBusStubAdapter( getDBusAddress().getObjectPath(), stubAdapter); itsFactory->unregisterManagedService(itsAddress); registeredLeafInterfaceInstances.erase(_instance); return true; } } return false; } std::set& SecondRootDBusStubAdapterInternal::getLeafInterfaceInstances() { return registeredLeafInterfaceInstances; } SecondRootDBusStubAdapterInternal::SecondRootDBusStubAdapterInternal( const CommonAPI::DBus::DBusAddress &_address, const std::shared_ptr &_connection, const std::shared_ptr &_stub) : CommonAPI::DBus::DBusStubAdapter(_address, _connection,true), SecondRootDBusStubAdapterHelper(_address, _connection, std::dynamic_pointer_cast(_stub), true), stubDispatcherTable_({ }), stubAttributeTable_() { stubDispatcherTable_.insert({ { "getInterfaceVersion", "" }, &commonapi::tests::managed::SecondRootDBusStubAdapterInternal::getSecondRootInterfaceVersionStubDispatcher }); } const bool SecondRootDBusStubAdapterInternal::hasFreedesktopProperties() { return false; } } // namespace managed } // namespace tests } // namespace commonapi } // namespace v1_0