From b2bcacf590f0206f7b608c4cc48afe61393dd007 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Mon, 29 Nov 2021 21:49:53 +0800 Subject: [PATCH] ui: singleton networkAccessManager (#22994) --- selfdrive/ui/qt/api.cc | 16 ++++++++++------ selfdrive/ui/qt/api.h | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/selfdrive/ui/qt/api.cc b/selfdrive/ui/qt/api.cc index 98236e5014..8ac9b41313 100644 --- a/selfdrive/ui/qt/api.cc +++ b/selfdrive/ui/qt/api.cc @@ -4,6 +4,7 @@ #include #include +#include #include #include #include @@ -62,8 +63,6 @@ QString create_jwt(const QJsonObject &payloads, int expiry) { } // namespace CommaApi HttpRequest::HttpRequest(QObject *parent, bool create_jwt, int timeout) : create_jwt(create_jwt), QObject(parent) { - networkAccessManager = new QNetworkAccessManager(this); - networkTimer = new QTimer(this); networkTimer->setSingleShot(true); networkTimer->setInterval(timeout); @@ -101,9 +100,9 @@ void HttpRequest::sendRequest(const QString &requestURL, const HttpRequest::Meth } if (method == HttpRequest::Method::GET) { - reply = networkAccessManager->get(request); + reply = nam()->get(request); } else if (method == HttpRequest::Method::DELETE) { - reply = networkAccessManager->deleteResource(request); + reply = nam()->deleteResource(request); } networkTimer->start(); @@ -122,8 +121,8 @@ void HttpRequest::requestFinished() { } else { QString error; if (reply->error() == QNetworkReply::OperationCanceledError) { - networkAccessManager->clearAccessCache(); - networkAccessManager->clearConnectionCache(); + nam()->clearAccessCache(); + nam()->clearConnectionCache(); error = "Request timed out"; } else { if (reply->error() == QNetworkReply::ContentAccessDenied || reply->error() == QNetworkReply::AuthenticationRequiredError) { @@ -137,3 +136,8 @@ void HttpRequest::requestFinished() { reply->deleteLater(); reply = nullptr; } + +QNetworkAccessManager *HttpRequest::nam() { + static QNetworkAccessManager *networkAccessManager = new QNetworkAccessManager(qApp); + return networkAccessManager; +} diff --git a/selfdrive/ui/qt/api.h b/selfdrive/ui/qt/api.h index 6890a7957d..8f74678109 100644 --- a/selfdrive/ui/qt/api.h +++ b/selfdrive/ui/qt/api.h @@ -37,7 +37,7 @@ protected: QNetworkReply *reply = nullptr; private: - QNetworkAccessManager *networkAccessManager = nullptr; + static QNetworkAccessManager *nam(); QTimer *networkTimer = nullptr; bool create_jwt;