HttpRequest: don't send request in ctor (#21665)

pull/21717/head
Dean Lee 4 years ago committed by GitHub
parent 4bd4ed4999
commit c24227c3ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 14
      selfdrive/ui/qt/api.cc
  2. 8
      selfdrive/ui/qt/api.h
  3. 4
      selfdrive/ui/qt/request_repeater.cc
  4. 3
      selfdrive/ui/qt/setup/setup.cc
  5. 4
      selfdrive/ui/qt/widgets/ssh_keys.cc
  6. 3
      selfdrive/ui/replay/replay.cc

@ -67,24 +67,24 @@ QString create_jwt(const QJsonObject &payloads, int expiry) {
} // namespace CommaApi } // namespace CommaApi
HttpRequest::HttpRequest(QObject *parent, const QString &requestURL, bool create_jwt_, HttpRequest::HttpRequest(QObject *parent, bool create_jwt, int timeout) : create_jwt(create_jwt), QObject(parent) {
int timeout) : create_jwt(create_jwt_), QObject(parent) {
networkAccessManager = new QNetworkAccessManager(this); networkAccessManager = new QNetworkAccessManager(this);
reply = NULL;
networkTimer = new QTimer(this); networkTimer = new QTimer(this);
networkTimer->setSingleShot(true); networkTimer->setSingleShot(true);
networkTimer->setInterval(timeout); networkTimer->setInterval(timeout);
connect(networkTimer, &QTimer::timeout, this, &HttpRequest::requestTimeout); connect(networkTimer, &QTimer::timeout, this, &HttpRequest::requestTimeout);
sendRequest(requestURL);
} }
bool HttpRequest::active() { bool HttpRequest::active() {
return reply != NULL; return reply != nullptr;
} }
void HttpRequest::sendRequest(const QString &requestURL) { void HttpRequest::sendRequest(const QString &requestURL) {
if (active()) {
qDebug() << "HttpRequest is active";
return;
}
QString token; QString token;
if(create_jwt) { if(create_jwt) {
token = CommaApi::create_jwt(); token = CommaApi::create_jwt();
@ -129,5 +129,5 @@ void HttpRequest::requestFinished() {
} }
emit requestDone(success); emit requestDone(success);
reply->deleteLater(); reply->deleteLater();
reply = NULL; reply = nullptr;
} }

@ -20,16 +20,16 @@ class HttpRequest : public QObject {
Q_OBJECT Q_OBJECT
public: public:
explicit HttpRequest(QObject* parent, const QString &requestURL, bool create_jwt_ = true, int timeout = 20000); explicit HttpRequest(QObject* parent, bool create_jwt = true, int timeout = 20000);
void sendRequest(const QString &requestURL); void sendRequest(const QString &requestURL);
bool active(); bool active();
protected: protected:
QNetworkReply *reply; QNetworkReply *reply = nullptr;
private: private:
QNetworkAccessManager *networkAccessManager; QNetworkAccessManager *networkAccessManager = nullptr;
QTimer *networkTimer; QTimer *networkTimer = nullptr;
bool create_jwt; bool create_jwt;
private slots: private slots:

@ -1,11 +1,11 @@
#include "selfdrive/ui/qt/request_repeater.h" #include "selfdrive/ui/qt/request_repeater.h"
RequestRepeater::RequestRepeater(QObject *parent, const QString &requestURL, const QString &cacheKey, RequestRepeater::RequestRepeater(QObject *parent, const QString &requestURL, const QString &cacheKey,
int period, bool while_onroad) : HttpRequest(parent, requestURL) { int period, bool while_onroad) : HttpRequest(parent) {
timer = new QTimer(this); timer = new QTimer(this);
timer->setTimerType(Qt::VeryCoarseTimer); timer->setTimerType(Qt::VeryCoarseTimer);
QObject::connect(timer, &QTimer::timeout, [=]() { QObject::connect(timer, &QTimer::timeout, [=]() {
if ((!QUIState::ui_state.scene.started || while_onroad) && QUIState::ui_state.awake && reply == NULL) { if ((!QUIState::ui_state.scene.started || while_onroad) && QUIState::ui_state.awake && !active()) {
sendRequest(requestURL); sendRequest(requestURL);
} }
}); });

@ -117,12 +117,13 @@ QWidget * Setup::network_setup() {
blayout->addWidget(cont); blayout->addWidget(cont);
// setup timer for testing internet connection // setup timer for testing internet connection
HttpRequest *request = new HttpRequest(this, DASHCAM_URL, false, 2500); HttpRequest *request = new HttpRequest(this, false, 2500);
QObject::connect(request, &HttpRequest::requestDone, [=](bool success) { QObject::connect(request, &HttpRequest::requestDone, [=](bool success) {
cont->setEnabled(success); cont->setEnabled(success);
cont->setText(success ? "Continue" : "Waiting for internet"); cont->setText(success ? "Continue" : "Waiting for internet");
repaint(); repaint();
}); });
request->sendRequest(DASHCAM_URL);
QTimer *timer = new QTimer(this); QTimer *timer = new QTimer(this);
QObject::connect(timer, &QTimer::timeout, [=]() { QObject::connect(timer, &QTimer::timeout, [=]() {
if (!request->active() && cont->isVisible()) { if (!request->active() && cont->isVisible()) {

@ -40,7 +40,7 @@ void SshControl::refresh() {
} }
void SshControl::getUserKeys(const QString &username) { void SshControl::getUserKeys(const QString &username) {
HttpRequest *request = new HttpRequest(this, "https://github.com/" + username + ".keys", false); HttpRequest *request = new HttpRequest(this, false);
QObject::connect(request, &HttpRequest::receivedResponse, [=](const QString &resp) { QObject::connect(request, &HttpRequest::receivedResponse, [=](const QString &resp) {
if (!resp.isEmpty()) { if (!resp.isEmpty()) {
params.put("GithubUsername", username.toStdString()); params.put("GithubUsername", username.toStdString());
@ -61,4 +61,6 @@ void SshControl::getUserKeys(const QString &username) {
refresh(); refresh();
request->deleteLater(); request->deleteLater();
}); });
request->sendRequest("https://github.com/" + username + ".keys");
} }

@ -46,8 +46,9 @@ Replay::Replay(QString route, SubMaster *sm_, QObject *parent) : sm(sm_), QObjec
} }
const QString url = "https://api.commadotai.com/v1/route/" + route + "/files"; const QString url = "https://api.commadotai.com/v1/route/" + route + "/files";
http = new HttpRequest(this, url, !Hardware::PC()); http = new HttpRequest(this, !Hardware::PC());
QObject::connect(http, &HttpRequest::receivedResponse, this, &Replay::parseResponse); QObject::connect(http, &HttpRequest::receivedResponse, this, &Replay::parseResponse);
http->sendRequest(url);
} }
void Replay::parseResponse(const QString &response) { void Replay::parseResponse(const QString &response) {

Loading…
Cancel
Save