packinfoseed2server.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include "packinfoseed2server.h"
  2. #include <QTimer>
  3. PackInfoSeed2Server::PackInfoSeed2Server(PackInfoManger * manger, QObject *parent, bool autoSync) : QObject(parent),
  4. _manger(manger),_autoSync(autoSync)
  5. {
  6. connect(&_requst,&HttpRequest::request,this,&PackInfoSeed2Server::_requst);
  7. _failedCount = 0;
  8. }
  9. void PackInfoSeed2Server::send(QSharedPointer<PackInfo> & info)
  10. {
  11. if(_manger == nullptr) return;
  12. _queue.append(info);
  13. QTimer::singleShot(20,this,&PackInfoSeed2Server::doSend);
  14. }
  15. void PackInfoSeed2Server::doSend()
  16. {
  17. if(_current.isNull() && !_queue.isEmpty()){
  18. _current = _queue.first();
  19. // TODO:小宋, 发送 _current 到服务器
  20. }
  21. }
  22. void PackInfoSeed2Server::result(int code, const QJsonObject & body)
  23. {
  24. if(code != 200 || body.isEmpty()){
  25. _current.clear();
  26. QTimer::singleShot(500,this,&PackInfoSeed2Server::doSend);
  27. _failedCount ++;
  28. return;
  29. }
  30. auto error = body.value("code").toInt();
  31. if(error == 200){
  32. _queue.dequeue();
  33. _manger->setPackInfoSync(_current->codeSingle(),_current->time(),_autoSync);
  34. _current.clear();
  35. QTimer::singleShot(20,this,&PackInfoSeed2Server::doSend);
  36. _failedCount = 0;
  37. } else {
  38. // TODO: 判断错误,根据错误去处理下一步,例如重复了,就next的
  39. }
  40. }