#pragma once #include "Arp/System/Core/Arp.h" #include "Arp/System/Acf/ComponentBase.hpp" #include "Arp/System/Acf/IApplication.hpp" #include "Arp/System/Commons/Logging.h" #include "Arp/Device/Interface/Services/IDeviceInfoService.hpp" namespace MyNamespace { using namespace Arp; using namespace Arp::System::Acf; using namespace Arp::Device::Interface::Services; //#acfcomponent class MyComponent : public ComponentBase, private Loggable { public: // typedefs public: // construction/destruction MyComponent(IApplication& application, const String& name); virtual ~MyComponent() = default; public: // IComponent operations void Initialize() override; void SubscribeServices()override; void LoadSettings(const String& settingsPath)override; void SetupSettings()override; void PublishServices()override; void LoadConfig() override; void SetupConfig() override; void ResetConfig() override; void Dispose()override; void PowerDown()override; private: // methods MyComponent(const MyComponent& arg) = delete; MyComponent& operator= (const MyComponent& arg) = delete; public: // static factory operations static IComponent::Ptr Create(Arp::System::Acf::IApplication& application, const String& name); private: IDeviceInfoService::Ptr deviceInfoServicePtr = nullptr; // Pointer to the device info service }; inline IComponent::Ptr MyComponent::Create(Arp::System::Acf::IApplication& application, const String& name) { return IComponent::Ptr(new MyComponent(application, name)); } } // end of namespace MyNamespace