/home/travis/build/open62541/open62541/src/server/ua_session_manager.h
Go to the documentation of this file.
00001 #ifndef UA_SESSION_MANAGER_H_
00002 #define UA_SESSION_MANAGER_H_
00003 
00004 #include "../deps/queue.h"
00005 #include "ua_server.h"
00006 #include "ua_util.h"
00007 #include "ua_session.h"
00008 
00009 typedef struct session_list_entry {
00010     LIST_ENTRY(session_list_entry) pointers;
00011     UA_Session session;
00012 } session_list_entry;
00013 
00014 typedef struct UA_SessionManager {
00015     LIST_HEAD(session_list, session_list_entry) sessions; // doubly-linked list of sessions
00016     UA_UInt32    maxSessionCount;
00017     UA_Int32     lastSessionId;
00018     UA_UInt32    currentSessionCount;
00019     UA_DateTime  maxSessionLifeTime;
00020 } UA_SessionManager;
00021 
00022 UA_StatusCode UA_SessionManager_init(UA_SessionManager *sessionManager, UA_UInt32 maxSessionCount,
00023                                     UA_UInt32 maxSessionLifeTime, UA_UInt32 startSessionId);
00024 
00025 void UA_SessionManager_deleteMembers(UA_SessionManager *sessionManager);
00026 
00027 void UA_SessionManager_cleanupTimedOut(UA_SessionManager *sessionManager, UA_DateTime now);
00028 
00029 UA_StatusCode UA_SessionManager_createSession(UA_SessionManager *sessionManager,
00030                                               UA_SecureChannel *channel, const UA_CreateSessionRequest *request,
00031                                               UA_Session **session);
00032 
00033 UA_StatusCode UA_SessionManager_removeSession(UA_SessionManager *sessionManager, const UA_NodeId *token);
00034 
00036 UA_Session * UA_SessionManager_getSession(UA_SessionManager *sessionManager, const UA_NodeId *token);
00037 
00038 #endif /* UA_SESSION_MANAGER_H_ */