PLCnext API Documentation  22.9.0.33
SecurityContext.hpp
1 //
3 // Copyright PHOENIX CONTACT Electronics GmbH
4 //
6 #pragma once
7 #include "Arp/System/Core/Arp.h"
8 #include "Arp/System/Security/SecurityToken.hpp"
9 #include "Arp/System/Commons/Exceptions/InvalidOperationException.hpp"
10 
11 namespace Arp { namespace System { namespace Security
12 {
13 
14 //forward declaration of DisableSecurityContext
15 namespace Internal
16 {
17 class DisableSecurityContext;
18 }
19 
21 {
22  friend class Arp::System::Security::Internal::DisableSecurityContext;
23 
24 public: // 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;
32  SecurityContext& operator=(const SecurityContext& arg) = delete;
34  ARP_CXX_SYMBOL_EXPORT ~SecurityContext(void);
35 
36 public: // static operations
37  ARP_CXX_SYMBOL_EXPORT static bool HasCurrent(void);
38  ARP_CXX_SYMBOL_EXPORT static const SecurityContext& GetCurrent(void);
39 
40 public: // setter/getter operations
41  const SecurityToken& GetSecurityToken(void)const;
42 
43 private: // fields
44  const SecurityToken& securityToken;
45 
46 private: // static fields
47  static thread_local const SecurityContext* pCurrent;
48 };
49 
51 // inline methods of class SecurityContext
52 
53 inline 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.
SecurityContext & operator=(const SecurityContext &arg)=delete
Assignment operator.
ARP_CXX_SYMBOL_EXPORT SecurityContext(bool isEnabled, const SecurityToken &securityToken)
Constructs an SecurityContext instance.
Definition: SecurityToken.hpp:12
@ System
System components used by the System, Device, Plc or Io domains.
Root namespace for the PLCnext API