timeout.cpp 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #include "timeout.h"
  2. #include "config.h"
  3. #include "httpclient.h"
  4. #include <QJsonObject>
  5. #include <QJsonArray>
  6. #include <QJsonDocument>
  7. extern config *pconfig;
  8. timeout::timeout()
  9. {
  10. m_iLockTimeout = startTimer(TIMER_LOCKNOTCLOSED);
  11. m_iHttpTimeout = startTimer(TIMER_HTTPSENDRELAY);
  12. }
  13. void timeout::timerEvent(QTimerEvent *event)
  14. {
  15. // 锁超时未关检测定时器
  16. if (event->timerId() == m_iLockTimeout)
  17. {
  18. if(pconfig->lastLockTimeEpoch == 0)
  19. {
  20. pconfig->locktimeout = false;
  21. }
  22. else
  23. {
  24. qint64 timeoutEpoch = QDateTime::currentSecsSinceEpoch() - pconfig->lastLockTimeEpoch;
  25. if(timeoutEpoch > pconfig->lockCloseTimeout)
  26. {
  27. emit signal_timeoutRun(timeoutEpoch - pconfig->lockCloseTimeout);
  28. pconfig->locktimeout = true;
  29. }
  30. }
  31. }
  32. else if (event->timerId() == m_iHttpTimeout)
  33. {
  34. if (m_epochLaseHttpPost == 0 && pconfig->locktimeout == true)
  35. {
  36. emit signal_timeoutStart();
  37. m_epochLaseHttpPost = QDateTime::currentSecsSinceEpoch();
  38. // 向服务器发送开锁异常请求
  39. QJsonObject jsonObjRoot;
  40. jsonObjRoot.insert("loanFromCode", pconfig->devUuid);
  41. QJsonDocument jsonDoc(jsonObjRoot);
  42. QByteArray jsonData = jsonDoc.toJson(QJsonDocument::Compact);
  43. // 访问http服务
  44. QString strUrl = "http://" + pconfig->httpHost + pconfig->postInsertCabinetOpenTimeout_url;
  45. QByteArray inData = jsonData;
  46. QByteArray outData;
  47. httpClient::postRequest(strUrl, httpClient::sToken, inData, outData);
  48. qDebug() << outData;
  49. }
  50. else if (m_epochLaseHttpPost != 0 && pconfig->locktimeout == false)
  51. {
  52. emit signal_timeoutEnd();
  53. m_epochLaseHttpPost = 0;
  54. // 向服务器发送解除开锁异常
  55. QJsonObject jsonObjRoot;
  56. jsonObjRoot.insert("loanFromCode", pconfig->devUuid);
  57. QJsonDocument jsonDoc(jsonObjRoot);
  58. QByteArray jsonData = jsonDoc.toJson(QJsonDocument::Compact);
  59. // 访问http服务
  60. QString strUrl = "http://" + pconfig->httpHost + pconfig->postUpdateCabinetOpenTimeout_url;
  61. QByteArray inData = jsonData;
  62. QByteArray outData;
  63. httpClient::postRequest(strUrl, httpClient::sToken, inData, outData);
  64. qDebug() << outData;
  65. }
  66. }
  67. }