PLCnext API Documentation  21.0.0.35466
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 using namespace Arp::System::Commons;
12 
13 namespace Arp { namespace System { namespace Security
14 {
15 
17 {
18 public: // typedefs
19 
20 public: // construction/destruction
22  ARP_CXX_SYMBOL_EXPORT SecurityContext(const SecurityToken& securityToken);
24  ARP_CXX_SYMBOL_EXPORT SecurityContext(bool isEnabled, const SecurityToken& securityToken);
26  SecurityContext(const SecurityContext& arg) = delete;
28  SecurityContext& operator=(const SecurityContext& arg) = delete;
30  ARP_CXX_SYMBOL_EXPORT ~SecurityContext(void);
31 
32 public: // static operations
33  ARP_CXX_SYMBOL_EXPORT static bool HasCurrent(void);
34  ARP_CXX_SYMBOL_EXPORT static const SecurityContext& GetCurrent(void);
35 
36 public: // setter/getter operations
37  const SecurityToken& GetSecurityToken(void)const;
38 
39 private: // fields
40  const SecurityToken& securityToken;
41 
42 private: // static fields
43  static thread_local const SecurityContext* pCurrent;
44 };
45 
47 // inline methods of class SecurityContext
48 
49 inline const SecurityToken& SecurityContext::GetSecurityToken()const
50 {
51  return this->securityToken;
52 }
53 
54 }}} // end of namespace Arp::System::Security
Definition: SecurityToken.hpp:11
Root namespace for the PLCnext API
Definition: SecurityContext.hpp:16
System components used by the System, Device, Plc or Io domains.
Namespace for basic functions of the framework
Definition: Console.hpp:14