heartbeat.cpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #include "heartbeat.h"
  2. #include "wssso.h"
  3. #include "sncdatabase.h"
  4. #include "respssoheartbeat.h"
  5. #include <QtGui/QApplication>
  6. HeartBeat::HeartBeat(QString userHash)
  7. {
  8. this->userHash = userHash;
  9. this->stop = false;
  10. QRegExp reg("\\d+");
  11. QMap<QString,QString> map = SNCDataBase::getSrvParam("sso");
  12. if(reg.exactMatch(map.value("heartBeatTime")))
  13. {
  14. cycle = map.value("heartBeatTime").toInt();
  15. }
  16. else
  17. {
  18. cycle = 120;
  19. }
  20. }
  21. void HeartBeat::setUserHash(QString userHash)
  22. {
  23. this->userHash = userHash;
  24. }
  25. void HeartBeat::abort()
  26. {
  27. this->stop = true;
  28. }
  29. HeartBeat::~HeartBeat()
  30. {
  31. qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
  32. <<"HeartBeat Destroyed.";
  33. }
  34. void HeartBeat::run()
  35. {
  36. this->stop = false;
  37. while(!stop)
  38. {
  39. WSSSO client;
  40. QString json = client.heartBeat(this->userHash,"","","");
  41. if(!json.isEmpty()){
  42. RespSSOHeartBeat response(json);
  43. int rtCode = response.getRtnCode();
  44. if(rtCode == 0)
  45. {
  46. break;
  47. }
  48. else if(rtCode == -1)
  49. {
  50. emit multiLogin();
  51. break;
  52. }
  53. }
  54. //msleep(1000*60*5);
  55. QTime dieTime = QTime::currentTime().addMSecs(1000*cycle);
  56. QTime c;
  57. c.start();
  58. while( QTime::currentTime() < dieTime )
  59. {
  60. QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
  61. msleep(500);
  62. if(stop)
  63. break;
  64. }
  65. //qDebug()<<c.elapsed();
  66. }
  67. }