Browse Source

minor changes

open62541 10 years ago
parent
commit
6b14fee06c
4 changed files with 33 additions and 14 deletions
  1. 8 3
      src/ua_services_session.c
  2. 18 7
      src/ua_stack_session.c
  3. 5 1
      src/ua_stack_session.h
  4. 2 3
      src/ua_stack_session_manager.c

+ 8 - 3
src/ua_services_session.c

@@ -9,14 +9,19 @@ Session sessionMockup = {
 UA_Int32 Service_CreateSession(UA_Session session, const UA_CreateSessionRequest *request, UA_CreateSessionResponse *response) {
 	UA_String_printf("CreateSession Service - endpointUrl=", &(request->endpointUrl));
 	// FIXME: create session
+	UA_Session *newSession;
+
+	UA_Session_new(newSession);
+	UA_Session_init(*newSession, &request->sessionName,request->requestedSessionTimeout);
+
+	UA_SessionManager_addSession(session);
+	UA_Session_getId(*newSession, &response->sessionId);
 
-	response->sessionId.encodingByte = UA_NODEIDTYPE_FOURBYTE;
-	response->sessionId.namespace = 1;
-	response->sessionId.identifier.numeric = 666;
 	return UA_SUCCESS;
 }
 
 UA_Int32 Service_ActivateSession(UA_Session session, const UA_ActivateSessionRequest *request, UA_ActivateSessionResponse *response) {
+
 	// FIXME: activate session
 	UA_NodeId_printf("ActivateSession - authToken=", &(request->requestHeader.authenticationToken));
 	// 321 == AnonymousIdentityToken_Encoding_DefaultBinary

+ 18 - 7
src/ua_stack_session.c

@@ -11,18 +11,31 @@ typedef struct UA_SessionType
 {
 	UA_NodeId authenticationToken;
 	UA_NodeId sessionId;
+	UA_String name;
 	void *applicationPayload;
 	Application *application;
 	UA_list_List pendingRequests;
 	SL_secureChannel channel;
 }UA_SessionType;
 
+UA_Int32 UA_Session_new(UA_Session *newSession)
+{
+	UA_Int32 retval = UA_SUCCESS;
+	retval |= UA_alloc((void**)&newSession,sizeof(UA_SessionType));
+	//get memory for request list
+	return retval;
+}
 
+UA_Int32 UA_Session_init(UA_Session session, UA_String *sessionName, UA_Double requestedSessionTimeout)
+{
+	UA_Int32 retval = UA_SUCCESS;
+	retval |= UA_String_copy(sessionName, &((UA_SessionType*)session)->name);
+	//TODO handle requestedSessionTimeout
+	return retval;
+}
 UA_Boolean UA_Session_compare(UA_Session session1, UA_Session session2)
 {
-	if(session1 && session2)
-	{
-
+	if(session1 && session2){
 		return UA_NodeId_compare(&((UA_SessionType*)session1)->sessionId,
 				&((UA_SessionType*)session2)->sessionId) == 0;
 	}
@@ -31,8 +44,7 @@ UA_Boolean UA_Session_compare(UA_Session session1, UA_Session session2)
 
 UA_Boolean UA_Session_compareByToken(UA_Session session, UA_NodeId *token)
 {
-	if(session && token)
-	{
+	if(session && token){
 		return UA_NodeId_compare(&((UA_SessionType*)session)->authenticationToken, token);
 	}
 	return UA_FALSE;
@@ -40,8 +52,7 @@ UA_Boolean UA_Session_compareByToken(UA_Session session, UA_NodeId *token)
 
 UA_Boolean UA_Session_compareById(UA_Session session, UA_NodeId *sessionId)
 {
-	if(session && sessionId)
-	{
+	if(session && sessionId){
 		return UA_NodeId_compare(&((UA_SessionType*)session)->sessionId, sessionId);
 	}
 	return UA_FALSE;

+ 5 - 1
src/ua_stack_session.h

@@ -16,10 +16,14 @@
 
 typedef struct UA_SessionType *UA_Session;
 
+UA_Int32 UA_Session_new(UA_Session *newSession);
+UA_Int32 UA_Session_init(UA_Session session, UA_String* sessionName);
 
 UA_Boolean UA_Session_compare(UA_Session session1, UA_Session session2);
+UA_Boolean UA_Session_compareByToken(UA_Session session, UA_NodeId *token);
+UA_Boolean UA_Session_compareById(UA_Session session, UA_NodeId *sessionId);
+
 UA_Int32 UA_Session_getId(UA_Session session, UA_NodeId *sessionId);
 UA_Int32 UA_Session_getChannel(UA_Session session, SL_secureChannel *channel);
 
-UA_Int32 UA_Session_new(UA_Session *newSession);
 #endif /* UA_STACK_SESSION_H_ */

+ 2 - 3
src/ua_stack_session_manager.c

@@ -62,8 +62,7 @@ UA_Int32 UA_SessionManager_getSessionById(UA_NodeId *sessionId, UA_Session *sess
 
 UA_Int32 UA_SessionManager_getSessionByToken(UA_NodeId *token, UA_Session *session)
 {
-	UA_UInt32 tmpSessionId;
- 	UA_list_Element* current = sessionManager->sessions.first;
+ 	UA_list_Element* current = sessionManager->sessions->first;
 	while (current)
 	{
 		if (current->payload)
@@ -85,7 +84,7 @@ 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);
+		retval |= UA_list_addElementToBack(sessionManager->sessions,(void*)session);
 		return retval;
 	}
 	else