|
@@ -31,14 +31,73 @@ UA_Int32 UA_SessionManager_init(UA_UInt32 maxSessionCount,UA_UInt32 sessionLifet
|
|
sessionManager->sessionLifetime = sessionLifetime;
|
|
sessionManager->sessionLifetime = sessionLifetime;
|
|
return retval;
|
|
return retval;
|
|
}
|
|
}
|
|
-UA_Int32 UA_SessionManager_addSession(UA_Session *session)
|
|
|
|
|
|
+
|
|
|
|
+UA_Boolean UA_SessionManager_sessionExists(UA_Session *session)
|
|
{
|
|
{
|
|
|
|
+ if(UA_list_search(sessionManager->sessions,(UA_list_PayloadComparer)UA_Session_compare,(void*)session))
|
|
|
|
+ {
|
|
|
|
+ return UA_TRUE;
|
|
|
|
+ }
|
|
|
|
+ return UA_FALSE;
|
|
|
|
+}
|
|
|
|
|
|
|
|
+UA_Int32 UA_SessionManager_getSessionById(UA_NodeId *sessionId, UA_Session *session)
|
|
|
|
+{
|
|
|
|
+ UA_UInt32 tmpSessionId;
|
|
|
|
+ UA_list_Element* current = sessionManager->sessions.first;
|
|
|
|
+ while (current)
|
|
|
|
+ {
|
|
|
|
+ if (current->payload)
|
|
|
|
+ {
|
|
|
|
+ UA_list_Element* elem = (UA_list_Element*) current;
|
|
|
|
+ *session = *((UA_Session*) (elem->payload));
|
|
|
|
+ if(UA_Session_compareById(*session,sessionId))
|
|
|
|
+ {
|
|
|
|
+ return UA_SUCCESS;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ *session = UA_NULL;
|
|
|
|
+ return UA_ERROR;
|
|
|
|
+}
|
|
|
|
|
|
- if(UA_SessionManager_getSession())
|
|
|
|
- UA_list_addElementToBack(sessionManager->sessions,session);
|
|
|
|
|
|
+UA_Int32 UA_SessionManager_getSessionByToken(UA_NodeId *token, UA_Session *session)
|
|
|
|
+{
|
|
|
|
+ UA_UInt32 tmpSessionId;
|
|
|
|
+ UA_list_Element* current = sessionManager->sessions.first;
|
|
|
|
+ while (current)
|
|
|
|
+ {
|
|
|
|
+ if (current->payload)
|
|
|
|
+ {
|
|
|
|
+ UA_list_Element* elem = (UA_list_Element*) current;
|
|
|
|
+ *session = *((UA_Session*) (elem->payload));
|
|
|
|
+ if(UA_Session_compareByToken(*session,token))
|
|
|
|
+ {
|
|
|
|
+ return UA_SUCCESS;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ *session = UA_NULL;
|
|
|
|
+ return UA_ERROR;
|
|
}
|
|
}
|
|
-UA_Int32 UA_SessionManager_removeSession(UA_Int32 channelId);
|
|
|
|
|
|
+
|
|
|
|
+UA_Int32 UA_SessionManager_addSession(UA_Session *session)
|
|
|
|
+{
|
|
|
|
+ UA_Int32 retval = UA_SUCCESS;
|
|
|
|
+ if(!UA_SessionManager_sessionExists(session))
|
|
|
|
+ {
|
|
|
|
+ retval |= UA_list_addElementToBack(sessionManager->sessions,session);
|
|
|
|
+ return retval;
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ printf("UA_SessionManager_addSession - session already in list");
|
|
|
|
+ return UA_ERROR;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/*UA_Int32 UA_SessionManager_removeSession(UA_Int32 channelId);
|
|
|
|
|
|
UA_Int32 UA_SessionManager_getSession(UA_UInt32 sessionId, UA_Session *session);
|
|
UA_Int32 UA_SessionManager_getSession(UA_UInt32 sessionId, UA_Session *session);
|
|
|
|
|
|
@@ -49,3 +108,4 @@ UA_Int32 UA_SessionManager_getSessionLifeTime(UA_DateTime *lifeTime);
|
|
UA_Int32 SL_UA_SessionManager_generateToken(SL_secureChannel channel, UA_Int32 requestedLifeTime, SecurityTokenRequestType requestType, UA_ChannelSecurityToken* newToken);
|
|
UA_Int32 SL_UA_SessionManager_generateToken(SL_secureChannel channel, UA_Int32 requestedLifeTime, SecurityTokenRequestType requestType, UA_ChannelSecurityToken* newToken);
|
|
|
|
|
|
UA_Int32 SL_UA_SessionManager_generateSessionId(UA_UInt32 *newChannelId);
|
|
UA_Int32 SL_UA_SessionManager_generateSessionId(UA_UInt32 *newChannelId);
|
|
|
|
+*/
|