/** * (C) 2016 - 2021 KISTLER INSTRUMENTE AG, Winterthur, Switzerland * (C) 2016 - 2022 Stanislav Angelovic * * @file TestAdaptor.h * * Created on: Jan 2, 2017 * Project: sdbus-c++ * Description: High-level D-Bus IPC C++ library based on sd-bus * * This file is part of sdbus-c++. * * sdbus-c++ is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 2.1 of the License, or * (at your option) any later version. * * sdbus-c++ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with sdbus-c++. If not, see . */ #ifndef SDBUS_CPP_INTEGRATIONTESTS_TESTADAPTOR_H_ #define SDBUS_CPP_INTEGRATIONTESTS_TESTADAPTOR_H_ #include "integrationtests-adaptor.h" #include "Defs.h" #include #include #include #include namespace sdbus { namespace test { class ObjectManagerTestAdaptor final : public sdbus::AdaptorInterfaces< sdbus::ObjectManager_adaptor > { public: ObjectManagerTestAdaptor(sdbus::IConnection& connection, std::string path) : AdaptorInterfaces(connection, std::move(path)) { registerAdaptor(); } ~ObjectManagerTestAdaptor() { unregisterAdaptor(); } }; class TestAdaptor final : public sdbus::AdaptorInterfaces< org::sdbuscpp::integrationtests_adaptor , sdbus::Properties_adaptor , sdbus::ManagedObject_adaptor > { public: TestAdaptor(sdbus::IConnection& connection, const std::string& path); ~TestAdaptor(); protected: void noArgNoReturn() override; int32_t getInt() override; std::tuple getTuple() override; double multiply(const int64_t& a, const double& b) override; void multiplyWithNoReply(const int64_t& a, const double& b) override; std::vector getInts16FromStruct(const sdbus::Struct>& arg0) override; sdbus::Variant processVariant(const sdbus::Variant& variant) override; std::map getMapOfVariants(const std::vector& x, const sdbus::Struct& y) override; sdbus::Struct>> getStructInStruct() override; int32_t sumStructItems(const sdbus::Struct& arg0, const sdbus::Struct& arg1) override; uint32_t sumVectorItems(const std::vector& arg0, const std::vector& arg1) override; uint32_t doOperation(const uint32_t& arg0) override; void doOperationAsync(sdbus::Result&& result, uint32_t arg0) override; sdbus::Signature getSignature() override; sdbus::ObjectPath getObjPath() override; sdbus::UnixFd getUnixFd() override; std::map>>>, sdbus::Signature, std::string>> getComplex() override; void throwError() override; void throwErrorWithNoReply() override; void doPrivilegedStuff() override; void emitTwoSimpleSignals() override; uint32_t action() override; void action(const uint32_t& value) override; bool blocking() override; void blocking(const bool& value) override; std::string state() override; public: void emitSignalWithoutRegistration(const sdbus::Struct>& s); std::string getExpectedXmlApiDescription() const; private: const std::string m_state{DEFAULT_STATE_VALUE}; uint32_t m_action{DEFAULT_ACTION_VALUE}; bool m_blocking{DEFAULT_BLOCKING_VALUE}; public: // for tests // For dont-expect-reply method call verifications mutable std::atomic m_wasMultiplyCalled{false}; mutable double m_multiplyResult{}; mutable std::atomic m_wasThrowErrorCalled{false}; const Message* m_methodCallMsg{}; std::string m_methodCallMemberName; const Message* m_propertySetMsg{}; std::string m_propertySetSender; }; }} #endif /* INTEGRATIONTESTS_TESTADAPTOR_H_ */