/home/travis/build/open62541/open62541/src/server/ua_securechannel_manager.h
Go to the documentation of this file.
00001 #ifndef UA_CHANNEL_MANAGER_H_
00002 #define UA_CHANNEL_MANAGER_H_
00003 
00004 #include "ua_util.h"
00005 #include "ua_server.h"
00006 #include "ua_securechannel.h"
00007 #include "queue.h"
00008 
00009 typedef struct channel_list_entry {
00010     UA_SecureChannel channel;
00011     LIST_ENTRY(channel_list_entry) pointers;
00012 } channel_list_entry;
00013 
00014 typedef struct UA_SecureChannelManager {
00015     LIST_HEAD(channel_list, channel_list_entry) channels; // doubly-linked list of channels
00016     UA_Int32    maxChannelCount;
00017     UA_DateTime maxChannelLifetime;
00018     UA_MessageSecurityMode securityMode;
00019     UA_DateTime channelLifeTime;
00020     UA_Int32    lastChannelId;
00021     UA_UInt32   lastTokenId;
00022 } UA_SecureChannelManager;
00023 
00024 UA_StatusCode UA_SecureChannelManager_init(UA_SecureChannelManager *cm, UA_UInt32 maxChannelCount,
00025                                            UA_UInt32 tokenLifetime, UA_UInt32 startChannelId,
00026                                            UA_UInt32 startTokenId);
00027 void UA_SecureChannelManager_deleteMembers(UA_SecureChannelManager *cm);
00028 void UA_SecureChannelManager_cleanupTimedOut(UA_SecureChannelManager *cm, UA_DateTime now);
00029 UA_StatusCode UA_SecureChannelManager_open(UA_SecureChannelManager *cm, UA_Connection *conn,
00030                                            const UA_OpenSecureChannelRequest *request,
00031                                            UA_OpenSecureChannelResponse *response);
00032 UA_StatusCode UA_SecureChannelManager_renew(UA_SecureChannelManager *cm, UA_Connection *conn,
00033                                             const UA_OpenSecureChannelRequest *request,
00034                                             UA_OpenSecureChannelResponse *response);
00035 UA_SecureChannel * UA_SecureChannelManager_get(UA_SecureChannelManager *cm, UA_UInt32 channelId);
00036 UA_StatusCode UA_SecureChannelManager_close(UA_SecureChannelManager *cm, UA_UInt32 channelId);
00037 
00038 #endif /* UA_CHANNEL_MANAGER_H_ */