try to implement timeouts support to quotes (ref to #54)

This commit is contained in:
arcan1s 2015-05-29 18:29:13 +03:00
parent b51c97abbb
commit f534a6854a
2 changed files with 21 additions and 3 deletions

View File

@ -24,7 +24,6 @@
#include <QJsonParseError> #include <QJsonParseError>
#include <QNetworkAccessManager> #include <QNetworkAccessManager>
#include <QNetworkRequest> #include <QNetworkRequest>
#include <QNetworkReply>
#include <QSettings> #include <QSettings>
#include <QTime> #include <QTime>
@ -243,7 +242,8 @@ QMap<QString, float> ExtQuotes::run()
QNetworkAccessManager *manager = new QNetworkAccessManager(this); QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(quotesReplyReceived(QNetworkReply *))); connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(quotesReplyReceived(QNetworkReply *)));
manager->get(QNetworkRequest(QUrl(url()))); QNetworkReply *reply = manager->get(QNetworkRequest(QUrl(url())));
new QReplyTimeout(reply, 1000);
} }
// update value // update value

View File

@ -20,11 +20,29 @@
#include <QDialog> #include <QDialog>
#include <QMap> #include <QMap>
#include <QNetworkReply>
#include <QTimer>
#define YAHOO_URL "https://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.quotes where symbol=\"$TICKER\"&env=store://datatables.org/alltableswithkeys&format=json" #define YAHOO_URL "https://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.quotes where symbol=\"$TICKER\"&env=store://datatables.org/alltableswithkeys&format=json"
class QNetworkReply; class QReplyTimeout : public QObject
{
Q_OBJECT
public:
QReplyTimeout(QNetworkReply *reply, const int timeout) : QObject(reply)
{
QTimer::singleShot(timeout, this, SLOT(timeout()));
}
private slots:
void timeout()
{
QNetworkReply *reply = static_cast<QNetworkReply *>(parent());
if (reply->isRunning()) reply->close();
}
};
namespace Ui { namespace Ui {
class ExtQuotes; class ExtQuotes;