PLCnext API Documentation 25.0.2.69
ProgramComponentBase.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
8#include "Arp/System/Acf/ComponentBase.hpp"
9#include "Arp/Plc/Commons/Esm/IProgramComponent.hpp"
10#include "Arp/Plc/Commons/Esm/ProgramProviderBase.hpp"
11#include "Arp/Plc/Commons/Meta/IMetaComponent.hpp"
12#include "Arp/Plc/Commons/Meta/DataInfoProvider.hpp"
13
14namespace Arp { namespace Plc { namespace Commons { namespace Esm
15{
16
17using namespace Arp;
18using namespace Arp::System::Acf;
19using namespace Arp::Plc::Commons::Meta;
20
22{
23public: // construction/destruction
24 ProgramComponentBase(const char* libraryNamespace, ProgramProviderBase& programProvider);
26 ~ProgramComponentBase(void) = default;
27
28public: // IComponent operations
29 void Initialize(void);
30 void SetupConfig(void);
31 void ResetConfig(void);
32
33public: // IMetaComponentBase operations
34 IProgramProvider& GetProgramProvider(bool useBackgroundDomain)override;
35 IDataInfoProvider& GetDataInfoProvider(bool useBackgroundDomain)override;
36 IDataNavigator* GetDataNavigator(void)override;
37
38protected: // virtual operation to override
39 virtual void RegisterComponentPorts(void);
40
41private:
42 void OnProgramAdded(IProgram::Ptr programPtr);
43 void OnProgramRemoved(IProgram::Ptr programPtr);
44
45
46private: // deleted methods
48 ProgramComponentBase(const ProgramComponentBase& arg) = delete;
50 ProgramComponentBase& operator=(const ProgramComponentBase& arg) = delete;
51
52protected: // fields
53 DataInfoProvider dataInfoProvider;
54
55private: // fields
56 ProgramProviderBase& programProvider;
57};
58
59}}}} // end of namespace Arp::Plc::Commons::Esm
Interface to realizes an access to a plc program provider.
Definition: IProgramComponent.hpp:18
Interface to realizes an program provider.
Definition: IProgramProvider.hpp:17
std::shared_ptr< IProgram > Ptr
Shared pointer type of IProgram.
Definition: IProgram.hpp:22
Definition: ProgramComponentBase.hpp:22
ProgramComponentBase(const char *libraryNamespace, ProgramProviderBase &programProvider)
Constructs an ProgramComponentBase instance.
Definition: ProgramComponentBase.cpp:15
IDataInfoProvider & GetDataInfoProvider(bool useBackgroundDomain) override
Gets the IDataInfoProvider of this component.
Definition: ProgramComponentBase.cpp:61
~ProgramComponentBase(void)=default
Destructs this instance and frees all resources.
IProgramProvider & GetProgramProvider(bool useBackgroundDomain) override
Returns the program provider of this component.
Definition: ProgramComponentBase.cpp:56
IDataNavigator * GetDataNavigator(void) override
Gets the specialized IDataNavigator of this component.
Definition: ProgramComponentBase.cpp:66
Definition: ProgramProviderBase.hpp:16
Provides information of component root variables
Definition: DataInfoProvider.hpp:36
Interface to provide information about component roots
Definition: IDataInfoProvider.hpp:18
Interface for all components providing meta data
Definition: IMetaComponent.hpp:20
Namespace for the Meta component
This is the namespace of the Application Component Framework.
Definition: ComponentBase.hpp:72
Root namespace for the PLCnext API