#pragma once #include #include #include #include #include #include namespace Katabasis { constexpr int defaultTimeout = 30 * 1000; /// A network request/reply pair that can time out. class Reply: public QTimer { Q_OBJECT public: Reply(QNetworkReply *reply, int timeOut = defaultTimeout, QObject *parent = 0); signals: void error(QNetworkReply::NetworkError); public slots: /// When time out occurs, the QNetworkReply's error() signal is triggered. void onTimeOut(); public: QNetworkReply *reply; bool timedOut = false; }; /// 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. void add(QNetworkReply *reply, int timeOut = defaultTimeout); /// 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 replies_; bool ignoreSslErrors_; }; }