2021-07-22 23:45:20 +05:30
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <QList>
|
|
|
|
#include <QTimer>
|
|
|
|
#include <QNetworkRequest>
|
|
|
|
#include <QNetworkReply>
|
|
|
|
#include <QNetworkAccessManager>
|
|
|
|
#include <QByteArray>
|
|
|
|
|
|
|
|
namespace Katabasis {
|
|
|
|
|
2021-11-28 23:12:01 +05:30
|
|
|
constexpr int defaultTimeout = 30 * 1000;
|
|
|
|
|
2021-07-22 23:45:20 +05:30
|
|
|
/// A network request/reply pair that can time out.
|
|
|
|
class Reply: public QTimer {
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
2021-11-28 23:12:01 +05:30
|
|
|
Reply(QNetworkReply *reply, int timeOut = defaultTimeout, QObject *parent = 0);
|
2021-07-22 23:45:20 +05:30
|
|
|
|
|
|
|
signals:
|
|
|
|
void error(QNetworkReply::NetworkError);
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
/// When time out occurs, the QNetworkReply's error() signal is triggered.
|
|
|
|
void onTimeOut();
|
|
|
|
|
|
|
|
public:
|
|
|
|
QNetworkReply *reply;
|
2021-11-28 23:12:01 +05:30
|
|
|
bool timedOut = false;
|
2021-07-22 23:45:20 +05:30
|
|
|
};
|
|
|
|
|
|
|
|
/// List of O2Replies.
|
|
|
|
class ReplyList {
|
|
|
|
public:
|
|
|
|
ReplyList() { ignoreSslErrors_ = false; }
|
|
|
|
|
|
|
|
/// Destructor.
|
|
|
|
/// Deletes all O2Reply instances in the list.
|
|
|
|
virtual ~ReplyList();
|
|
|
|
|
|
|
|
/// Create a new O2Reply from a QNetworkReply, and add it to this list.
|
2021-11-28 23:12:01 +05:30
|
|
|
void add(QNetworkReply *reply, int timeOut = defaultTimeout);
|
2021-07-22 23:45:20 +05:30
|
|
|
|
|
|
|
/// Add an O2Reply to the list, while taking ownership of it.
|
|
|
|
void add(Reply *reply);
|
|
|
|
|
|
|
|
/// Remove item from the list that corresponds to a QNetworkReply.
|
|
|
|
void remove(QNetworkReply *reply);
|
|
|
|
|
|
|
|
/// Find an O2Reply in the list, corresponding to a QNetworkReply.
|
|
|
|
/// @return Matching O2Reply or NULL.
|
|
|
|
Reply *find(QNetworkReply *reply);
|
|
|
|
|
|
|
|
bool ignoreSslErrors();
|
|
|
|
void setIgnoreSslErrors(bool ignoreSslErrors);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
QList<Reply *> replies_;
|
|
|
|
bool ignoreSslErrors_;
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|