aboutsummaryrefslogtreecommitdiff
path: root/libraries/katabasis/src/Reply.cpp
blob: 775b92021b840d2a3244e5b1fbadb29662d36571 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <QTimer>
#include <QNetworkReply>

#include "katabasis/Reply.h"

namespace Katabasis {

Reply::Reply(QNetworkReply *r, int timeOut, QObject *parent): QTimer(parent), reply(r) {
    setSingleShot(true);
    connect(this, SIGNAL(error(QNetworkReply::NetworkError)), reply, SIGNAL(error(QNetworkReply::NetworkError)), Qt::QueuedConnection);
    connect(this, SIGNAL(timeout()), this, SLOT(onTimeOut()), Qt::QueuedConnection);
    start(timeOut);
}

void Reply::onTimeOut() {
    emit error(QNetworkReply::TimeoutError);
}

ReplyList::~ReplyList() {
    foreach (Reply *timedReply, replies_) {
        delete timedReply;
    }
}

void ReplyList::add(QNetworkReply *reply) {
    if (reply && ignoreSslErrors())
            reply->ignoreSslErrors();
    add(new Reply(reply));
}

void ReplyList::add(Reply *reply) {
    replies_.append(reply);
}

void ReplyList::remove(QNetworkReply *reply) {
    Reply *o2Reply = find(reply);
    if (o2Reply) {
        o2Reply->stop();
        (void)replies_.removeOne(o2Reply);
    }
}

Reply *ReplyList::find(QNetworkReply *reply) {
    foreach (Reply *timedReply, replies_) {
        if (timedReply->reply == reply) {
            return timedReply;
        }
    }
    return 0;
}

bool ReplyList::ignoreSslErrors()
{
    return ignoreSslErrors_;
}

void ReplyList::setIgnoreSslErrors(bool ignoreSslErrors)
{
    ignoreSslErrors_ = ignoreSslErrors;
}

}