mirror of
https://github.com/subsurface/subsurface.git
synced 2025-01-19 14:25:27 +00:00
Add support for timing the download out
The time out is 30 seconds from the start of the request or from the last time we got any data from the server. Signed-off-by: Thiago Macieira <thiago@macieira.org>
This commit is contained in:
parent
ab1b314a84
commit
919c7045b7
2 changed files with 18 additions and 0 deletions
|
@ -95,7 +95,9 @@ WebServices::WebServices(QWidget* parent, Qt::WindowFlags f): QDialog(parent, f)
|
|||
ui.setupUi(this);
|
||||
connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(buttonClicked(QAbstractButton*)));
|
||||
connect(ui.download, SIGNAL(clicked(bool)), this, SLOT(startDownload()));
|
||||
connect(&timeout, SIGNAL(timeout()), this, SLOT(downloadTimedOut()));
|
||||
ui.buttonBox->button(QDialogButtonBox::Apply)->setEnabled(false);
|
||||
timeout.setSingleShot(true);
|
||||
}
|
||||
|
||||
void WebServices::hidePassword()
|
||||
|
@ -115,6 +117,17 @@ QNetworkAccessManager *WebServices::manager()
|
|||
return manager;
|
||||
}
|
||||
|
||||
void WebServices::downloadTimedOut()
|
||||
{
|
||||
if (!reply)
|
||||
return;
|
||||
|
||||
reply->deleteLater();
|
||||
reply = NULL;
|
||||
resetState();
|
||||
ui.status->setText(tr("Download timed out"));
|
||||
}
|
||||
|
||||
void WebServices::updateProgress(qint64 current, qint64 total)
|
||||
{
|
||||
if (!reply)
|
||||
|
@ -144,6 +157,8 @@ void WebServices::connectSignalsForDownload(QNetworkReply *reply)
|
|||
this, SLOT(downloadError(QNetworkReply::NetworkError)));
|
||||
connect(reply, SIGNAL(downloadProgress(qint64,qint64)), this,
|
||||
SLOT(updateProgress(qint64,qint64)));
|
||||
|
||||
timeout.start(30000); // 30s
|
||||
}
|
||||
|
||||
void WebServices::resetState()
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include <QDialog>
|
||||
#include <QNetworkReply>
|
||||
#include <QTimer>
|
||||
#include <libxml/tree.h>
|
||||
|
||||
#include "ui_webservices.h"
|
||||
|
@ -23,6 +24,7 @@ private slots:
|
|||
virtual void startDownload() = 0;
|
||||
virtual void startUpload() = 0;
|
||||
virtual void buttonClicked(QAbstractButton* button) = 0;
|
||||
virtual void downloadTimedOut();
|
||||
|
||||
protected slots:
|
||||
void updateProgress(qint64 current, qint64 total);
|
||||
|
@ -33,6 +35,7 @@ protected:
|
|||
|
||||
Ui::WebServices ui;
|
||||
QNetworkReply *reply;
|
||||
QTimer timeout;
|
||||
QByteArray downloadedData;
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue