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;
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