PLCnext API Documentation  21.6.0.46
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 
14 namespace Arp { namespace System { namespace Security
15 {
16 //forward declaration of DisableSecurityContext
17 namespace Internal
18 {
19 class DisableSecurityContext;
20 }
21 
22 
23 
25 {
26  friend class Arp::System::Security::Internal::DisableSecurityContext;
27 public: // typedefs
28 
29 public: // construction/destruction
31  ARP_CXX_SYMBOL_EXPORT SecurityContext(const SecurityToken& securityToken);
33  ARP_CXX_SYMBOL_EXPORT SecurityContext(bool isEnabled, const SecurityToken& securityToken);
35  SecurityContext(const SecurityContext& arg) = delete;
37  SecurityContext& operator=(const SecurityContext& arg) = delete;
39  ARP_CXX_SYMBOL_EXPORT ~SecurityContext(void);
40 
41 public: // static operations
42  ARP_CXX_SYMBOL_EXPORT static bool HasCurrent(void);
43  ARP_CXX_SYMBOL_EXPORT static const SecurityContext& GetCurrent(void);
44 
45 public: // setter/getter operations
46  const SecurityToken& GetSecurityToken(void)const;
47 
48 private: // fields
49  const SecurityToken& securityToken;
50 
51 private: // static fields
52  static thread_local const SecurityContext* pCurrent;
53 };
54 
56 // inline methods of class SecurityContext
57 
58 inline const SecurityToken& SecurityContext::GetSecurityToken()const
59 {
60  return this->securityToken;
61 }
62 
63 }}} // end of namespace Arp::System::Security
Definition: SecurityToken.hpp:11
Root namespace for the PLCnext API
Definition: SecurityContext.hpp:24
System components used by the System, Device, Plc or Io domains.
Namespace for basic functions of the framework
Definition: Console.hpp:14