ua_securechannel_manager.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #ifndef UA_CHANNEL_MANAGER_H_
  2. #define UA_CHANNEL_MANAGER_H_
  3. #include "ua_util.h"
  4. #include "ua_server.h"
  5. #include "ua_securechannel.h"
  6. #include "queue.h"
  7. typedef struct channel_list_entry {
  8. UA_SecureChannel channel;
  9. LIST_ENTRY(channel_list_entry) pointers;
  10. } channel_list_entry;
  11. typedef struct UA_SecureChannelManager {
  12. LIST_HEAD(channel_list, channel_list_entry) channels; // doubly-linked list of channels
  13. size_t maxChannelCount;
  14. size_t currentChannelCount;
  15. UA_UInt32 maxChannelLifetime;
  16. UA_MessageSecurityMode securityMode;
  17. UA_DateTime channelLifeTime;
  18. UA_UInt32 lastChannelId;
  19. UA_UInt32 lastTokenId;
  20. UA_Server *server;
  21. } UA_SecureChannelManager;
  22. UA_StatusCode
  23. UA_SecureChannelManager_init(UA_SecureChannelManager *cm, size_t maxChannelCount,
  24. UA_UInt32 tokenLifetime, UA_UInt32 startChannelId,
  25. UA_UInt32 startTokenId, UA_Server *server);
  26. void UA_SecureChannelManager_deleteMembers(UA_SecureChannelManager *cm);
  27. void UA_SecureChannelManager_cleanupTimedOut(UA_SecureChannelManager *cm, UA_DateTime now);
  28. UA_StatusCode
  29. UA_SecureChannelManager_open(UA_SecureChannelManager *cm, UA_Connection *conn,
  30. const UA_OpenSecureChannelRequest *request,
  31. UA_OpenSecureChannelResponse *response);
  32. UA_StatusCode
  33. UA_SecureChannelManager_renew(UA_SecureChannelManager *cm, UA_Connection *conn,
  34. const UA_OpenSecureChannelRequest *request,
  35. UA_OpenSecureChannelResponse *response);
  36. UA_SecureChannel *
  37. UA_SecureChannelManager_get(UA_SecureChannelManager *cm, UA_UInt32 channelId);
  38. UA_StatusCode
  39. UA_SecureChannelManager_close(UA_SecureChannelManager *cm, UA_UInt32 channelId);
  40. #endif /* UA_CHANNEL_MANAGER_H_ */