PLCnext API Documentation 25.0.2.69
SystemEventProvider.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
8#include "Arp/Base/Core/PimplPtr.hxx"
9#include "Arp/Base/Core/delegate.hxx"
10#include "Arp/Base/Acf/Commons/SystemEvent.hpp"
11#include "Arp/Base/Acf/Commons/SystemState.hpp"
12
13namespace Arp { namespace Base { namespace Acf { namespace Commons
14{
15
20class ARP_EXPORT SystemEventProvider
21{
22public: // Impl forward declaration
23 class Impl;
24
25public: // usings
26 using SystemEventHandler = delegate<void(SystemEvent)>;
27
28public: // construction/destruction/assignment
30 SystemEventProvider(const SystemEventProvider& arg) = delete;
32 SystemEventProvider& operator=(const SystemEventProvider& arg) = delete;
35
36public: // operations
37 void AddEventHandler(SystemEvent systemEvent, const SystemEventHandler& eventHandler);
38 void RemoveEventHandler(SystemEvent systemEvent, const SystemEventHandler& eventHandler);
39 SystemState WaitFor(SystemEvent systemEvent);
40 SystemState GetSystemState(void)const;
41
42public: // internal operations
43 Impl& GetImpl(void);
44 const Impl& GetImpl(void)const;
45
46private: // Impl usings
47 using Pimpl = PimplPtr<Impl>;
48
49private: // Impl fields
50 Pimpl pimpl;
51};
52
53}}}} // end of namespace Arp::Base::Acf::Commons
This class provides system event handling functionality.
Definition: SystemEventProvider.hpp:21
SystemEventProvider(void)
The default constructor.
SystemEventProvider(SystemEventProvider &&arg) noexcept
The default move constructor.
SystemEventProvider & operator=(SystemEventProvider &&arg) noexcept
The default move-assignment operator.
~SystemEventProvider(void)
The default destructor.
Adapter class to implement PImpl idiom.
Definition: PimplPtr.hxx:15
Prototyping of delegate template.
Definition: delegate.hxx:14
Root namespace for the PLCnext API