ua_stack_session.c 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /*
  2. * ua_stack_session.c
  3. *
  4. * Created on: 05.06.2014
  5. * Author: root
  6. */
  7. #include "ua_stack_session.h"
  8. typedef struct UA_SessionType
  9. {
  10. UA_NodeId authenticationToken;
  11. UA_NodeId sessionId;
  12. UA_String name;
  13. void *applicationPayload;
  14. Application *application;
  15. UA_list_List pendingRequests;
  16. SL_secureChannel channel;
  17. }UA_SessionType;
  18. UA_Int32 UA_Session_new(UA_Session *newSession)
  19. {
  20. UA_Int32 retval = UA_SUCCESS;
  21. retval |= UA_alloc((void**)&newSession,sizeof(UA_SessionType));
  22. //get memory for request list
  23. return retval;
  24. }
  25. UA_Int32 UA_Session_init(UA_Session session, UA_String *sessionName, UA_Double requestedSessionTimeout)
  26. {
  27. UA_Int32 retval = UA_SUCCESS;
  28. retval |= UA_String_copy(sessionName, &((UA_SessionType*)session)->name);
  29. //TODO handle requestedSessionTimeout
  30. return retval;
  31. }
  32. UA_Boolean UA_Session_compare(UA_Session session1, UA_Session session2)
  33. {
  34. if(session1 && session2){
  35. return UA_NodeId_compare(&((UA_SessionType*)session1)->sessionId,
  36. &((UA_SessionType*)session2)->sessionId) == 0;
  37. }
  38. return UA_FALSE;
  39. }
  40. UA_Boolean UA_Session_compareByToken(UA_Session session, UA_NodeId *token)
  41. {
  42. if(session && token){
  43. return UA_NodeId_compare(&((UA_SessionType*)session)->authenticationToken, token);
  44. }
  45. return UA_FALSE;
  46. }
  47. UA_Boolean UA_Session_compareById(UA_Session session, UA_NodeId *sessionId)
  48. {
  49. if(session && sessionId){
  50. return UA_NodeId_compare(&((UA_SessionType*)session)->sessionId, sessionId);
  51. }
  52. return UA_FALSE;
  53. }
  54. UA_Int32 UA_Session_getId(UA_Session session, UA_NodeId *sessionId)
  55. {
  56. if(session)
  57. {
  58. return UA_NodeId_copy(&((UA_SessionType*)session)->sessionId, sessionId);
  59. }
  60. return UA_ERROR;
  61. }
  62. UA_Int32 UA_Session_getChannel(UA_Session session, SL_secureChannel *channel)
  63. {
  64. if(session)
  65. {
  66. *channel = ((UA_SessionType*)session)->channel;
  67. return UA_SUCCESS;
  68. }
  69. return UA_ERROR;
  70. }