ui: singleton networkAccessManager (#22994)

pull/23063/head
Dean Lee 2021-11-29 21:49:53 +08:00 committed by GitHub
parent dbec761941
commit b2bcacf590
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 7 deletions

View File

@ -4,6 +4,7 @@
#include <openssl/pem.h>
#include <openssl/rsa.h>
#include <QApplication>
#include <QCryptographicHash>
#include <QDateTime>
#include <QDebug>
@ -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;
}

View File

@ -37,7 +37,7 @@ protected:
QNetworkReply *reply = nullptr;
private:
QNetworkAccessManager *networkAccessManager = nullptr;
static QNetworkAccessManager *nam();
QTimer *networkTimer = nullptr;
bool create_jwt;