session.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /*
  2. Copyright 2017 Herik Lima de Castro and Marcelo Medeiros Eler
  3. Distributed under MIT license, or public domain if desired and
  4. recognized in your jurisdiction.
  5. See file LICENSE for detail.
  6. */
  7. #include "session.h"
  8. #include <utility>
  9. #include "configuration.h"
  10. CWF_BEGIN_NAMESPACE
  11. Session::Session(QString id, qint64 sessionTimeOut) : id(std::move(id)),
  12. sessionTimeOut(sessionTimeOut),
  13. autoClearAttributes(false),
  14. expired (false)
  15. {
  16. }
  17. Session::~Session()
  18. {
  19. QMutexLocker locker(&mutex);
  20. if(autoClearAttributes)
  21. {
  22. for(QMapThreadSafety<QString, QObject*>::iterator it = attributes.begin(); it != attributes.end(); ++it)
  23. {
  24. delete it.value();
  25. }
  26. }
  27. }
  28. QStringList Session::getAttributeNames()
  29. {
  30. QStringList list;
  31. for(QMapThreadSafety<QString, QObject*>::iterator it = attributes.begin(); it != attributes.end(); ++it)
  32. list.push_back(it.key());
  33. return list;
  34. }
  35. QString Session::getId() const
  36. {
  37. QMutexLocker locker(&mutex);
  38. return id;
  39. }
  40. void Session::validate()
  41. {
  42. QMutexLocker locker(&mutex);
  43. expired = 0;
  44. qint64 currentTime = QDateTime::currentMSecsSinceEpoch();
  45. lastAccessedTime = currentTime;
  46. sessionExpirationTime = currentTime + sessionTimeOut;
  47. }
  48. bool Session::isExpired()
  49. {
  50. QMutexLocker locker(&mutex);
  51. if(!expired)
  52. {
  53. qint64 currentTime = QDateTime::currentMSecsSinceEpoch();
  54. expired = currentTime >= sessionExpirationTime;
  55. }
  56. return expired;
  57. }
  58. void Session::setSessionTimeOut(qint64 value)
  59. {
  60. if(value >= 0)
  61. {
  62. sessionTimeOut = value;
  63. }
  64. }
  65. CWF_END_NAMESPACE