PLCnext API Documentation 23.6.0.37
SecurityContext.hpp
1
2//
3// Copyright PHOENIX CONTACT Electronics GmbH
4//
6#pragma once
8#include "Arp/System/Security/SecurityToken.hpp"
9#include "Arp/System/Commons/Exceptions/InvalidOperationException.hpp"
10
11namespace Arp { namespace System { namespace Security
12{
13
14//forward declaration of DisableSecurityContext
15namespace Internal
16{
17class DisableSecurityContext;
18}
19
21{
22 friend class Arp::System::Security::Internal::DisableSecurityContext;
23
24public: // construction/destruction
26 ARP_CXX_SYMBOL_EXPORT SecurityContext(const SecurityToken& securityToken);
28 ARP_CXX_SYMBOL_EXPORT SecurityContext(bool isEnabled, const SecurityToken& securityToken);
30 SecurityContext(const SecurityContext& arg) = delete;
34 ARP_CXX_SYMBOL_EXPORT ~SecurityContext(void);
35
36public: // static operations
37 ARP_CXX_SYMBOL_EXPORT static bool HasCurrent(void);
38 ARP_CXX_SYMBOL_EXPORT static const SecurityContext& GetCurrent(void);
39
40public: // setter/getter operations
41 const SecurityToken& GetSecurityToken(void)const;
42
43private: // fields
44 const SecurityToken& securityToken;
45
46private: // static fields
47 static thread_local const SecurityContext* pCurrent;
48};
49
51// inline methods of class SecurityContext
52
53inline const SecurityToken& SecurityContext::GetSecurityToken()const
54{
55 return this->securityToken;
56}
57
58}}} // end of namespace Arp::System::Security
Definition: SecurityContext.hpp:21
ARP_CXX_SYMBOL_EXPORT SecurityContext(const SecurityToken &securityToken)
Constructs an SecurityContext instance.
ARP_CXX_SYMBOL_EXPORT ~SecurityContext(void)
Destructs this instance and frees all resources.
SecurityContext(const SecurityContext &arg)=delete
Copy constructor.
ARP_CXX_SYMBOL_EXPORT SecurityContext(bool isEnabled, const SecurityToken &securityToken)
Constructs an SecurityContext instance.
SecurityContext & operator=(const SecurityContext &arg)=delete
Assignment operator.
Definition: SecurityToken.hpp:12
@ System
System components used by the System, Device, Plc or Io domains.
Root namespace for the PLCnext API